【发布时间】:2020-04-13 22:51:07
【问题描述】:
是否可以在 ghci 中重新分配相同的变量?当然,这在普通的 Haskell 中是不可能的(至少没有像 IORef 这样的东西),但我很好奇,因为 ghci 中的 it 变量是通过启用 :m 选项获得的。启用此功能后,我获得了 it 可以通过 not 将下一个表达式绑定到任何东西来有效地重新分配的体验,例如
λ> 1 + 1
2
it :: Num a => a
λ> it
2
it :: Num a => a
λ> it + 1
3
it :: Num a => a
λ> it
3
it :: Num a => a
有没有办法为任意命名变量实现相同的效果,而不仅仅是特殊的it?
【问题讨论】:
-
不,它不是重新分配,您只需定义一个 second 更多本地范围的变量
it。 -
在 ghci 下,
x <- return (x+1)表达式似乎符合您的预期。 -
@jpmarinier 但只有 似乎。 :) 它仍然是阴影,只是在一行代码而不是两行代码中,如所见,例如这里:how to increment a variable in functional programming.