gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 05:30:10 28 4
gpt4 key购买 nike

前几天我遇到了一个接线员,-< ,出现在将值绑定(bind)到 monad 中的变量的上下文中;具体来说,这看起来像是将一个值传递给一个函数,然后将其分配(并可能评估?)给一个存在于 monad 范围内的变量。

示例用法:

myMonad = do
myVar <- f -< x

关于这个的几个问题:首先,它叫什么?运营商本身无法通过 Google 搜索(Google 不喜欢 <>),而我找到的一个名称“ arrow application”通常链接到 the other kind of Arrow present in Haskell ,这似乎无关。

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

最后,这是否等同于使用括号,如 (myVar <- f -< x) == (myVar <- (f x)) ?还是更像是使用 let myVar = (f x) ?在任何一种情况下,如果它是这样使用的,为什么要使用 -<超过括号或 $ ?

最佳答案

是的,那是同一种箭头。箭头有糖语法,就像单子(monad)有糖语法一样。你不能用谷歌搜索-< , 但您可以使用 Hoogle .

见:GHC Language Features , Arrow tutorial .

箭头语法确实记录得很差。无法使用的原因$而不是 -<-<将纯值注入(inject)箭头,但 ->只是箭头的一个例子。所以,$如果您的箭头是 ->,则可以正常工作.还有一元箭头(Kleisli 构造函数创建这些箭头),您可以制作自己的箭头,在这些情况下 -<是不同的。

关于haskell - 到底是什么 "-<",无论如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30276551/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com