gpt4 book ai didi

haskell - fmap (+3) (*3) 不应该等同于\x -> ((x+3)*3) 吗?

转载 作者:行者123 更新时间:2023-12-05 00:53:07 25 4
gpt4 key购买 nike

Learn you a Haskell ,有鉴于此

fmap (+3) (*3)

等价于

\x -> ((x*3)+3))

但是,我不明白为什么。不应该是 \x -> ((x+3)*3) 吗?

我不知道 (*3) 仿函数的 fmap 的实现,但我的直觉告诉我,既然仿函数 (*3) 等价于 \x -> x * 3,映射 (+3) 将首先应用,然后 (*3) 被应用,但它是相反的方式。我在这里缺少什么?

最佳答案

my intuition tells me that since the functor (*3) is equivalent to \x -> x * 3

函数形成一个仿函数实例

instance Functor ((->) r) where ...

这些是从 r 映射的函数。

给定一个函数 g::r -> a 你可以在 f::的帮助下形成一个新函数 h::r -> b a -> b 通过 h = fmap f g。现在应该清楚 f::a -> b 不能先应用,而必须先应用。那就是 h' = (g::r -> a) 。 (f::a -> b) 没有任何意义,但 h = (f::a -> b) 。 (g::r -> a) 确实如此。

关于haskell - fmap (+3) (*3) 不应该等同于\x -> ((x+3)*3) 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68329543/

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