gpt4 book ai didi

haskell - 为什么 `2 + x = 7` 是有效的 Haskell?

转载 作者:行者123 更新时间:2023-12-02 04:38:21 26 4
gpt4 key购买 nike

当我尝试编译时

main = putStrLn $ show x where
2 + x = 7

GHC 提示

error: Variable not in scope: x
|
1 | main = putStrLn $ show x
| ^

因此,2 + x = 7 本身在语法上是有效的,尽管它实际上并未定义 x。但为什么会这样呢?

最佳答案

它是有效的,因为它定义了 +

main = print (3 + 4)
where -- silly redefinition of `+` follows
0 + y = y
x + y = x * ((x-1) + y)

上面,Prelude (+) 函数被本地绑定(bind)隐藏。结果将是 24,而不是 7

打开警告应该指出危险的阴影。

<interactive>:11:6: warning: [-Wname-shadowing]
This binding for ‘+’ shadows the existing binding

关于haskell - 为什么 `2 + x = 7` 是有效的 Haskell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50200487/

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