【发布时间】:2013-01-12 15:32:57
【问题描述】:
我觉得问这个问题有点傻,但我一直在想这个问题,但我找不到任何答案。
所以问题是:为什么应用函子可以有副作用,而函子没有?
也许他们可以,但我从未注意到...?
【问题讨论】:
-
“有副作用”是什么意思?
-
每个 monad 也是一个函子,所以你必须更具体...
-
原始论文“Applicative Programming with effects”具有高度可读性,并通过几个示例解释了应用函子提供的额外强大功能。 strictlypositive.org/Idiom.pdf
-
他们可以而且您从未注意到!我喜欢使用带有 IO 的 Functor 来应用这样的纯函数:
fmap (unlines.reverse.lines) $ readFile "chronological_log.txt"。我倾向于对从Data.Functor(或Control.Applicative!)导入的fmap、<$>使用中缀运算符,所以我通常会写unlines.reverse.lines <$> readFile "chronological_log.txt"。
标签: haskell monads side-effects applicative