适用(和朋友)方法是否有人性化的名称?

时间:2011-04-29 19:42:18

标签: haskell naming applicative

我最近一直在使用应用程序(和替代方案),令我感到沮丧的一件事是我对命名法缺乏了解。例如,我希望能够为function namestar thing而不是<*>。因此,与>>=阅读bind的方式大致相同,以下是否有更多人性化的名称:

  • <*> - 申请?
  • <*&amp; *> - 左右适用?
  • <$> - fmap?
  • <|>

同样来自箭头

  • *** - 拆分?
  • &&& - 粉丝?

如果有这些名称,我的搜索没有发现它们。我知道这些可能没有被接受的条款,但是如果有的话,我很想知道它们。

3 个答案:

答案 0 :(得分:10)

符号来自Doaitse Swierstra和Luc Duponcheel:他们已经为解析器组合器确定了这个界面,我们认为尊重他们的选择非常重要。我试图记住Doaitse如何发音,但是画了一个空白。

我更喜欢他们被人看到而没有被人听到。事实上,我更喜欢他们不被人看见,因此idiom brackets。但特别是在定义实例时,有名称是有帮助的。并不是因为它取决于我的名字:整个成语与应用与善良 - 知道 - 什么恶作剧是一个迷人的权力研究。用我自己的说法来说明它的价值

  • <*>是'应用(to)'(界面是'纯粹和应用',就像数学一样)
  • *>被“忽略”
  • <*是'忽略'
  • <$>是'已映射(过)'
  • <$也许是“之后”,但我并没有非常清楚地把它称之为任何东西

关键思想:效果总是从左到右顺序排列(无论如何); $或*告诉你他们左边的是纯粹的还是惯用的; V形符号告诉您结果数据流,仅指向信号。

另一种发音方案,远离各个运营商的水平,可能会转换

f <$> a <*> b <* c <*> d

到'IDIOM:f,a,b,NOISE c,d'或其他一些。但那真的是阅读括号版本

(|f a b (-c-) d|)

大声说道。

我发现“金钱”和“啪啪”有趣,但我们可能会优先考虑语法上的语义优先级。

答案 1 :(得分:7)

好吧,<$>fmap的同义词。此外,名称“applicative”让我想到应用的东西。由于<*>是执行此操作的主要操作符,因此我认为我将其松散地与“apply”一词联系起来。上下文与正常的函数应用程序略有不同,因此可能会对该单词产生一些混淆,但上下文通常会使其足够清晰,因此它对我有用。 <*>也是Control.Monad中ap函数的同义词,因此这证实了我对“apply”一词的使用。

Brent Yorgey Typeclassopedia是我学习大部分内容的地方。这是一个很好的资源。

答案 2 :(得分:5)

嗯,没有标准名称,但有时它们被称为:

  • <*>是“splat”
  • <$>是“钱”

这样:

 f <$> g <*> x

发音为:

 f `money` g `splat` x

我相信由Trevor Elliott和Eric Mertens发起的条款。