gpt4 book ai didi

haskell - fmap和map,我看不出区别

转载 作者:行者123 更新时间:2023-12-03 14:57:37 26 4
gpt4 key购买 nike

我试图了解仿函数是什么,但到目前为止我还不能。这2个有什么区别:

Prelude> fmap (+1) [1..9]
[2,3,4,5,6,7,8,9,10]

Prelude> map (+1) [1..9]
[2,3,4,5,6,7,8,9,10]

最佳答案

对于列表,没有区别,map只是 fmap专门用于列表。
fmap有一个更一般的类型:

fmap :: Functor f => (a -> b) -> f a -> f b

这意味着它可以与任何仿函数一起使用,例如
fmap (+ 3) (Just 4)          -- Just 7
fmap (+ 4) (+ 3) 1 -- 8. Functions are functors where fmap = (.)
fmap read getLine :: IO Int -- IO is a functor

虽然 map 有类型
map :: (a -> b) -> [a] -> [b]

如果您查看 source ,列表的仿函数实例定义 fmapmap :
instance Functor [] where
fmap = map

关于haskell - fmap和map,我看不出区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22897055/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com