根据这个问题,Haskell 中的第 1 条暗示了第 2 函子定律:
1st Law: fmap id = id
2nd Law : fmap (g . h) = (fmap g) . (fmap h)
反过来是真的吗?从第二定律开始,设置g
等于id
,我可以推理以下并得到第一定律吗?
fmap (id . h) x = (fmap id) . (fmap h) x
fmap h x = (fmap id) . (fmap h) x
x' = (fmap id) x'
fmap id = id
在哪里x' = fmap h x