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

luk*_*all 9 haskell naming applicative

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

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

同样来自箭头

  • *** - 分裂?
  • &&& - 扇出?

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

小智 10

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

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

  • <*> 是'应用(to)'(界面是'纯粹和应用',像数学一样)
  • *> 被'忽略'
  • <* 是'无视'
  • <$> 被'映射(过)'
  • <$ 也许是"之后",但我并不十分清楚地称它为任何东西

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

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

f <$> a <*> b <* c <*> d
Run Code Online (Sandbox Code Playgroud)

'IDIOM:f,a,b,NOISE c,d'或其他一些.但这真的是阅读支架版本

(|f a b (-c-) d|)
Run Code Online (Sandbox Code Playgroud)

响亮地.

我觉得"钱"和"啪"很有趣,但我们可能会优先考虑语法上的语义优先级.


mig*_*yte 7

嗯,<$>是一个同义词fmap.此外,名称"applicative"让我想到应用的东西.既然<*>是这样做的主要操作者,我想我将它与"应用"一词松散地联系在一起.上下文与正常的函数应用程序略有不同,因此可能会对该单词产生一些混淆,但上下文通常会使其足够清晰,因此它对我有用. <*>也是apControl.Monad函数的同义词,所以这证实了我对"apply"这个词的使用.

Brent Yorgey的Typeclassopedia是我学习大部分内容的地方.这是一个出色的资源.


Don*_*art 5

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

  • <*> 是"啪啪"
  • <$> 是"钱"

这样:

 f <$> g <*> x
Run Code Online (Sandbox Code Playgroud)

发音为:

 f `money` g `splat` x
Run Code Online (Sandbox Code Playgroud)

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

  • 可能不值得注意的是,"splat"和"big money"是原始**INTERCAL参考手册**中为`*`和`$`运算符指定的官方发音,如果我是肯定的权威来源**从来没有听说过. (9认同)