<$>在Haskell中的含义是什么?

pro*_*s21 40 haskell

在阅读一段Haskell代码时,我发现了这个:<$>.在Haskell中它意味着什么?经过一些谷歌搜索,我仍然在黑暗中.

lef*_*out 61

谷歌不是Haskell最好的搜索引擎.尝试HoogleHayoo,两者都会立即指出:

(<$>) :: Functor f => (a->b) -> f a -> f b
Run Code Online (Sandbox Code Playgroud)

它只是一个中缀的同义词fmap,所以你可以写例如

Prelude> (*2) <$> [1..3]
[2,4,6]
Prelude> show <$> Just 11
Just "11"
Run Code Online (Sandbox Code Playgroud)

像大多数中缀函数一样,它不是内置语法,只是函数定义.但是仿函数是一种<$>几乎无处不在的基本工具.

  • Google上"Haskell <$>"的最高结果现在是这个页面,所以从某种意义上说,Google在这种情况下现在是一个非常好的搜索引擎! (12认同)
  • 我喜欢你用匕首符号来表示 Hayoo 已经死了一段时间了。 (5认同)
  • @Richard 当然有一点需要指出,Haskellers 往往对所有这些象形文字中缀运算符感到有点愚蠢。然而,`&lt;$&gt;` 非常常见,人们很快就能掌握它的窍门,它与也很常见的 `$` 一起助记,而且它比``‌`fmap` 更紧凑,视觉上更简洁。 ‌‌”。我不同意后者在更大的上下文中更容易阅读。 (5认同)
  • 为什么使用“&lt;$&gt;”而不是“fmap”?反引号使内容变得固定,并且更容易阅读 (2认同)