Haskell的编码风格:map,fmap还是<$>?

是否有理由select下列其中一种符号,或者这只是一个优先select?

map toLower "FOO" fmap toLower "FOO" toLower <$> "FOO" 

另外:我意识到<$>`fmap`是一样的。 我是否正确地认为mapfmap一般forms?

正如你所说, mapfmap一般forms。 如果你知道你有一个列表,那么我会使用map因为它使代码更清晰,如果你犯了一个错误,错误信息可能不那么容易混淆。 但在很大程度上,这是一个偏好问题。

(<$>)fmap相同。 在GHC 7.10之前,它并没有被Prelude导出,所以默认情况下是不可用的 – 但是即使使用的是旧的GHC版本,也很容易从Data.Functor或者Control.Applicative导入,而这些都是标准的方法。

我同意Ganesh的观点, map更清晰。 除非部分应用,否则通过fmap使用<$> 。 所以我会使用fmap reverse来声明一个反转一些函数的所有元素的函数,但是如果我有所有可用的参数(例如,如果我正在do块中写一行),我倾向于使用运算符forms: reverse <$> fx