【发布时间】:2012-11-19 14:32:39
【问题描述】:
我在理解 Haskell 中的符号时遇到问题:
=<<
如:
-- return the last ten lines of a file
tail10 = drop =<< subtract 10 . length
谁能给我解释一下这是什么意思?
当我学习 Haskell 时,我发现这种情况经常发生,因为我碰到了这些符号之一,我不知道它们的含义或它们是如何工作的。有没有更深入地讨论 Haskell 中的符号而不是函数本身的网站或教程?
【问题讨论】:
-
Haskell 允许您定义自己的中缀运算符,因此您无法在某处真正拥有它们的详尽列表。不过,你可以试试 Hoogle - haskell.org/hoogle/?hoogle=%3D%3C%3C
-
只是
>>=,参数的顺序颠倒了。 -
在这种情况下,它在
(r ->)函数monad中,它在函数之间共享一个参数,其中>>=定义为(f >>= g) x = g (f x) x,因此代码等效于tail10 xs = drop ((subtract 10 . length) xs) xs。 -
但在这种情况下,
=<<=concatMap。