小编ven*_*ddy的帖子

(>> =)和(> =>之间的区别

我需要一些关于(>> =)和(> =>)的澄清.

*Main Control.Monad> :type (>>=)                                                                                                                                                               
(>>=) :: Monad m => m a -> (a -> m b) -> m b                                                                                                                                                
*Main Control.Monad> :type (>=>)                                                                                                                                                               
(>=>) :: Monad m => (a -> m b) -> (b -> m c) -> a -> m c 
Run Code Online (Sandbox Code Playgroud)

我知道bind运算符(>> =),但我没有得到(> =>)有用的上下文.请用简单的玩具例子说明.

编辑:根据@Thomas评论进行更正

monads haskell functional-programming

8
推荐指数
1
解决办法
131
查看次数

在Haskell中永远理解

目标:取一个字符串并在控制台中打印相同的东西,就像需要永远完成相同的操作一样

我提出了这样的事情,没有编译错误但没有按预期工作.

greet_buggy :: String -> IO ()
greet_buggy = forever $ putStrLn
Run Code Online (Sandbox Code Playgroud)

问题是在字符串下面没有在控制台中打印任何内容.

greet_buggy "something"
Run Code Online (Sandbox Code Playgroud)

基于这篇文章我尝试调试并更改了如下定义.它工作正常

greet :: IO ()
greet = forever $ putStrLn "Hello"
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释这里发生的事情吗?是否有可能forever单独使用相同的效果?

编辑:找到一个相关的帖子(感谢@Daniel Wagner),即使通过这个问题与我的不同,答案解释一下forever.

monads haskell

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

标签 统计

haskell ×2

monads ×2

functional-programming ×1