gpt4 book ai didi

haskell - 在 Haskell 中使用 'let' 的功能纯度

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

当我正在学习 Haskell 时,我知道它是一种纯粹的函数式语言。我无法理解为什么 let - 陈述不违反纯度。

例如(在 ghci 中):

Prelude> let e = exp 1
Prelude> e
2.718281828459045
Prelude> let e = 2
Prelude> e
2

不是我的第二个 let声明产生副作用?或者是第二个 let声明一个新的关闭?

最佳答案

您的第二个 lete 创建一个新绑定(bind)阴影现有的变量。它不修改 e .您可以通过以下方式轻松检查:

Prelude> let e = 1
Prelude> let f () = "e is now " ++ show e
Prelude> f ()
"e is now 1"
Prelude> let e = 2
Prelude> e
2
Prelude> f ()
"e is now 1"
Prelude>

关于haskell - 在 Haskell 中使用 'let' 的功能纯度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13545580/

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