我是 Monads 的新手,正在尝试编写一个添加函数,但我不确定为什么这不起作用。使用 monad 时,是否需要以特定方式返回值?
monadd :: (Monad m, Num b) => m b -> m b -> m b
monadd mx my = mx >>= (\x -> my >>= (\y -> (x + y)))
Run Code Online (Sandbox Code Playgroud) 当我在 Haskell 中输入以下代码时:
data BT a = Empty | Fork a (BT a) (BT a)
Empty :: BT a
Fork :: a -> BT a -> BT a -> BT a
Run Code Online (Sandbox Code Playgroud)
我明白了
错误:输入“::”时出现解析错误
我看不出问题是什么,如果我添加deriving (show)到顶行,它会更改为
错误:输入“空”时解析错误