到底是什么" - <",无论如何?

Jul*_*les 8 monads haskell

有一天,我遇到了一个运算符,-<出现在将值绑定到monad中的变量的上下文中; 具体来说,它看起来像是将一个值传递给一个函数,然后该函数被分配(并且可能被评估?)到monad范围内存在的变量.

用法示例:

myMonad = do
    myVar <- f -< x
Run Code Online (Sandbox Code Playgroud)

关于这个的一些问题:首先,它叫什么?运营商本身是不可谷歌的(谷歌不喜欢<或者>),我发现的一个名称," 箭头应用程序 ",通常链接到Haskell中的另一种Arrow存在,这似乎是无关的.

第二,为什么在大多数学习资源中没有解释这个操作员?无论是"Monads的温和介绍"还是LYAH都没有提及它,而且大多数Haskell运营商的名单都放弃了它.(这被认为是不好的做法吗?)

最后,这相当于使用括号,如,(myVar <- f -< x) == (myVar <- (f x))?还是更喜欢使用let myVar = (f x)?在任何一种情况下,如果这是它的使用方式,为什么要使用-<parens或$

Die*_*Epp 16

是的,那是同一种箭头.箭头有糖语法,就像monad的糖语法一样.您无法使用Google进行搜索-<,但可以使用Hoogle.

请参阅:GHC语言功能,箭头教程.

箭头语法确实记录不清.你不能使用的原因$,而不是-<在于-<注入纯值转换成箭头,但->只有一个箭头的例子.所以,$如果你的箭头是,那么工作正常->.还有monadic箭头(Kleisli构造函数创建那些),你可以制作自己的箭头,在这些情况下-<是不同的.