Haskell的编码风格:map,fmap还是<$>?
是否有理由select下列其中一种符号,或者这只是一个优先select?
map toLower "FOO" fmap toLower "FOO" toLower <$> "FOO"
另外:我意识到<$>
和`fmap`
是一样的。 我是否正确地认为map
是fmap
一般forms?
正如你所说, map
是fmap
一般forms。 如果你知道你有一个列表,那么我会使用map
因为它使代码更清晰,如果你犯了一个错误,错误信息可能不那么容易混淆。 但在很大程度上,这是一个偏好问题。
(<$>)
与fmap
相同。 在GHC 7.10之前,它并没有被Prelude导出,所以默认情况下是不可用的 – 但是即使使用的是旧的GHC版本,也很容易从Data.Functor
或者Control.Applicative
导入,而这些都是标准的方法。
我同意Ganesh的观点, map
更清晰。 除非部分应用,否则通过fmap
使用<$>
。 所以我会使用fmap reverse
来声明一个反转一些函数的所有元素的函数,但是如果我有所有可用的参数(例如,如果我正在do
块中写一行),我倾向于使用运算符forms: reverse <$> fx