您如何在Applicative类型类中发音这些函数:
(<*>) :: f (a -> b) -> f a -> f b
(*>) :: f a -> f b -> f b
(<*) :: f a -> f b -> f a
(也就是说,如果他们不是运营商,他们会被称为什么?)
作为旁注,如果你可以将pure
重命名为对非数学家更友好的东西,你会怎么称呼它?
答案 0 :(得分:235)
答案 1 :(得分:21)
由于我没有改进C. A. McCann's technical answer的野心,我将解决更为蓬松的问题:
如果你可以将
pure
重命名为像我这样的podunks更友好的东西,你会怎么称呼它?
作为一种替代方案,特别是因为对Monad
版return
版本持续的焦虑和背叛情绪没有结束,我提出另一个名称,这表明其以一种能够满足最迫切需求的程序员的方式运作,并且功能最强大......好吧,希望每个人都可以抱怨:inject
。
取一个值。 “将其”注入Functor
,Applicative
,Monad
或您拥有的内容。我投票支持“inject
”,我批准了这条消息。
答案 2 :(得分:4)
简而言之:
<*>
您可以将其称为应用。因此,Maybe f <*> Maybe a
可以发音为将Maybe f
应用于Maybe a
。
您可以将pure
重命名为of
,就像许多JavaScript库一样。在JS中,您可以使用Maybe
创建Maybe.of(a)
。
此外,Haskell的wiki有一个关于语言运营商here
发音的页面答案 3 :(得分:2)
(<*>) -- Tie Fighter
(*>) -- Right Tie
(<*) -- Left Tie
pure -- also called "return"
资料来源:Haskell Programming from First Principles,来自Chris Allen和Julie Moronuki