在 ghci 中,如何删除现有绑定?
In ghci, how to remove an existing binding?
我收到一个 "binding shadows the existing binding" 错误,类似于 this 问题中的错误。
Prelude Api.Facility Control.Monad.IO.Class> let t = getBadgesNot 1 (Nothing) (Just 1)
<interactive>:55:5: warning: [-Wname-shadowing]
This binding for ‘t’ shadows the existing binding
defined at <interactive>:39:5
我在会话的早些时候定义了现有的绑定,现在正试图重新定义它。 有没有办法删除现有的绑定,以便我可以重新定义 t
?
我注意到在其他情况下 ghci 在重新定义现有绑定时不会出错。例如
Prelude> let t = 1
Prelude> let t = 2
Prelude> let t = "there"
为什么在某些情况下重新定义现有绑定时 ghci 会出错,而在其他情况下却不会?
Is there a way to remove the existing binding so that I can redefine t
?
不,您不能删除现有的绑定。不过,你可以随时重新定义t
,没问题。
Why does ghci error when redefining an existing binding in some cases and not in others?
因为您 运行 ghci 具有不同的 warning/error 设置;例如通过在命令行上传递 -Wname-shadowing
(可能是因为你通过 cabal 或 stack 运行 ghci,并且关联的项目在其 .cabal 文件中指定了此选项)。 N.B。 -Wname-shadowing
不应阻止您重新定义 t
除非与 -Werror
结合将单纯的警告变成全面的错误。
根据您是否使用 let
,行为似乎也有所不同;这可能是一个错误:
% ghci -Wname-shadowing -Werror
> let t=3
> let t=4
<interactive>:3:5: warning: [-Wname-shadowing]
This binding for ‘t’ shadows the existing binding
defined at <interactive>:1:5
<no location info>: error:
Failing due to -Werror.
> t
3
> t=4
> t
4
我收到一个 "binding shadows the existing binding" 错误,类似于 this 问题中的错误。
Prelude Api.Facility Control.Monad.IO.Class> let t = getBadgesNot 1 (Nothing) (Just 1)
<interactive>:55:5: warning: [-Wname-shadowing]
This binding for ‘t’ shadows the existing binding
defined at <interactive>:39:5
我在会话的早些时候定义了现有的绑定,现在正试图重新定义它。 有没有办法删除现有的绑定,以便我可以重新定义 t
?
我注意到在其他情况下 ghci 在重新定义现有绑定时不会出错。例如
Prelude> let t = 1
Prelude> let t = 2
Prelude> let t = "there"
为什么在某些情况下重新定义现有绑定时 ghci 会出错,而在其他情况下却不会?
Is there a way to remove the existing binding so that I can redefine
t
?
不,您不能删除现有的绑定。不过,你可以随时重新定义t
,没问题。
Why does ghci error when redefining an existing binding in some cases and not in others?
因为您 运行 ghci 具有不同的 warning/error 设置;例如通过在命令行上传递 -Wname-shadowing
(可能是因为你通过 cabal 或 stack 运行 ghci,并且关联的项目在其 .cabal 文件中指定了此选项)。 N.B。 -Wname-shadowing
不应阻止您重新定义 t
除非与 -Werror
结合将单纯的警告变成全面的错误。
根据您是否使用 let
,行为似乎也有所不同;这可能是一个错误:
% ghci -Wname-shadowing -Werror
> let t=3
> let t=4
<interactive>:3:5: warning: [-Wname-shadowing]
This binding for ‘t’ shadows the existing binding
defined at <interactive>:1:5
<no location info>: error:
Failing due to -Werror.
> t
3
> t=4
> t
4