只是为了学习我在我的控制台WinGHCi上做了这个:
let ls = [putChar 'x',putChar 'y']
Run Code Online (Sandbox Code Playgroud)
那么如果:
head ls
Run Code Online (Sandbox Code Playgroud)
输出是显而易见的 x (在我看来为什么不明显的意义上)
如果我这样做:
tail ls
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
使用'print'不会产生(Show(IO()))的实例
在交互式GHCi命令的stmt中:打印它
为什么?不应该输出y或[putChar 'y']?
我在Haskell学习monad.
我在这里读到关于Monads的一个非常好的解释,我认为已经理解(并非所有,但我刚刚开始)关于>>=绑定运算符和Monad.
在我老师的幻灯片上,我发现了这个:
class Monad m where
(>>=) :: m a -> (a -> m b) -> m b -- "bind"
(>>) :: m a -> m b -> m b -- "then"
return :: a -> m a
Run Code Online (Sandbox Code Playgroud)
什么是>>在它不同于>>=?