gpt4 book ai didi

haskell - 如何理解将 (.) 运算符用作参数的表达式?

转载 作者:行者123 更新时间:2023-12-04 15:56:27 25 4
gpt4 key购买 nike

我是 Haskell 的新手,即使我已经完成了基本操作,但我仍然不明白为什么以下结果会给出 4:

d f x = f x x
main = print ((d (.)) (d (+)) 1)

最佳答案

d (.) 将产生一个函数 \x -> (.) x x ,该函数将 x 函数作为输入,并将因此取一个变量 y 并应用 x 两次,所以 \x y -> x (x y)

d (+) 表达式。 d (+) 又是一个类似于 \z -> (+) z z 的函数,或者更简洁的 \z -> z + z,因此这是一个将数字z作为输入的函数,并将返回z + z

我们在 \x y -> x (x y) 表达式中使用这个函数 \z -> z + z 作为变量 x,所以 d (.) (d (+)) 等价于 \y -> (\z -> z + z) ((\z -> z + z) y)

最后我们用1作为参数的函数,结果是(\z -> z + z) ((\z -> z + z) 1) 相当于:

  (\z -> z + z) ((\z -> z + z) 1)
→ (\z -> z + z) (1 + 1)
→ (\z -> z + z) 2
→ (2 + 2)
→ 4

关于haskell - 如何理解将 (.) 运算符用作参数的表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69565880/

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