到底是什么“-<”?

朱尔斯

前几天,我遇到了一个运算符,-<出现在将值绑定到monad中的变量的上下文中;特别是,看起来这会将值传递给函数,然后将其赋值给(并可能求值了?)存在于monad范围内的变量。

用法示例:

myMonad = do
    myVar <- f -< x

关于此的几个问题:首先,它叫什么?运算符本身是不可谷歌搜索的(Google不喜欢<>),而我找到的一个名称“ arrow application ”通常链接到Haskell中的另一种形式Arrow,这似乎无关。

其次,为什么在大多数学习资源中都没有解释这个运算符?“ Monads的入门介绍”和LYAH都没有提及它,而且大多数Haskell运算符列表也都放弃了它。(是否认为这是不良做法?)

最后,这是否等效于使用括号,如(myVar <- f -< x) == (myVar <- (f x))还是更像是使用let myVar = (f x)无论哪种情况,如果使用的是这种方法,为什么要-<在parens上使用$

迪特里希·埃普

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

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

箭头语法的确记录很少。您不能使用$代替的原因-<是,-<将纯值插入箭头,但这->只是箭头的一个示例。因此,$如果您的箭头是,则可以正常工作->还有单子箭头(Kleisli构造函数会创建这些箭头),您可以制作自己的箭头,但在这种情况下-<是不同的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章