我最近一直在使用应用程序(和替代方案),令我感到沮丧的一件事是我对命名法缺乏了解。例如,我希望能够为function name
说star thing
而不是<*>
。因此,与>>=
阅读bind
的方式大致相同,以下是否有更多人性化的名称:
<*>
- 申请?<*
&amp; *>
- 左右适用?<$>
- fmap?<|>
同样来自箭头
***
- 拆分?&&&
- 粉丝?如果有这些名称,我的搜索没有发现它们。我知道这些可能没有被接受的条款,但是如果有的话,我很想知道它们。
答案 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发起的条款。