小编yon*_*tix的帖子

Haskell State monad解释

我有这个片段,你能解释一下是做什么的,特别是>> =?

instance Monad (State s) where
    return a = State $ \s -> (a, s)
    State st >>= f = State $ \s ->
        let (a, s') = st s
        in  runState (f a) s'
Run Code Online (Sandbox Code Playgroud)

最终你能以更清晰的形式写出来吗?谢谢

haskell

0
推荐指数
2
解决办法
134
查看次数

Writer monad运算符定义问题

我想>>=为Write monad 定义运算符.我尝试了类似的东西,但它不起作用(不编译).我可以得到一些帮助吗?谢谢

newtype Writer a = Writer { runWriter :: (a, [String]) }

instance Monad Writer where
    return = Writer

    Writer m >>= f = Writer $ \r ->
        (runWriter (f m) r)
Run Code Online (Sandbox Code Playgroud)

我明白了:

Couldn't match type ‘a’ with ‘(a, [String])’
Run Code Online (Sandbox Code Playgroud)

我在返回行时遇到此错误,但也>>=没有很好地定义,我正在努力使其正确.

haskell

0
推荐指数
1
解决办法
62
查看次数

Haskell列表索引超出范围

如何修改以下功能,使列表短于搜索索引的情况将导致错误.

elementAt::Int -> [Int] -> Int
elementAt = Data.Foldable.foldl (\x y -> if x == 0 then y else x-1)
Run Code Online (Sandbox Code Playgroud)

1是第一个元素的索引

haskell

0
推荐指数
1
解决办法
737
查看次数

Haskell定点签名

以下Haskell函数的签名是什么:

fix f = f (fix f)
Run Code Online (Sandbox Code Playgroud)

a)((a-> b) - > a-> b) - > a-> b

b)签名无法合成

c)(a-> a) - > a

谢谢!

haskell functional-programming

-4
推荐指数
1
解决办法
127
查看次数

标签 统计

haskell ×4

functional-programming ×1