我正在阅读Happstack 的留言簿示例,并注意到>>我之前在学习Haskell的教科书中没有看到的符号(例如见第23行).它是什么?
我无法在Google中找到它,因为它>>完全忽略了它(Bing没有提出大量非相关结果).
ken*_*ytm 14
用符号表示
a >> b >> c >> d
Run Code Online (Sandbox Code Playgroud)
相当于
do a
b
c
d
Run Code Online (Sandbox Code Playgroud)
(同样a >>= (b >>= (c >>= d))相当于
do r1 <- a
r2 <- b r1
r3 <- c r2
d r3
Run Code Online (Sandbox Code Playgroud)
jro*_*way 11
在ghci命令提示符下,您可以键入:
:info >>
Run Code Online (Sandbox Code Playgroud)
并获得如下结果:
class Monad m where
...
(>>) :: m a -> m b -> m b
...
-- Defined in GHC.Base
infixl 1 >>
Run Code Online (Sandbox Code Playgroud)
从那里,您可以查看源代码以了解更多信息.
只是为了回答你的问题:
k >> f = k >>= \_ -> f
Run Code Online (Sandbox Code Playgroud)
来自 Hackage,>>被描述为:
“顺序组合两个动作,丢弃第一个产生的任何值,如命令式语言中的排序运算符(如分号)。”
我认为一个很好的例子是使用>>. 打开 GHCI 并输入以下内容:
putStr "Hello " >> putStrLn "World"
这相当于do符号:
do putStr "Hello "
putStrLn "World"
Run Code Online (Sandbox Code Playgroud)