Haskell:怎么样< *>发音?

时间:2010-07-13 23:33:36

标签: haskell operators

您如何在Applicative类型类中发音这些函数:

(<*>) :: f (a -> b) -> f a -> f b
(*>)  :: f a -> f b -> f b
(<*)  :: f a -> f b -> f a

(也就是说,如果他们不是运营商,他们会被称为什么?)

作为旁注,如果你可以将pure重命名为对非数学家更友好的东西,你会怎么称呼它?

4 个答案:

答案 0 :(得分:235)

答案 1 :(得分:21)

由于我没有改进C. A. McCann's technical answer的野心,我将解决更为蓬松的问题:

  

如果你可以将pure重命名为像我这样的podunks更友好的东西,你会怎么称呼它?

作为一种替代方案,特别是因为对Monadreturn版本持续的焦虑和背叛情绪没有结束,我提出另一个名称,这表明其以一种能够满足最迫切需求的程序员的方式运作,并且功能最强大......好吧,希望每个人都可以抱怨:inject

取一个值。 “将其”注入FunctorApplicativeMonad或您拥有的内容。我投票支持“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