GHCI的行为:sprint命令

时间:2015-09-08 15:41:37

标签: haskell

在教程What I Wish I Knew When Learning Haskell中,GHCi内部存在关于使用:sprint命令检查某些变量的评估状态的这种交互:

λ: let a = [1..] :: [Integer]
λ: :sprint a
a = _
λ: a !! 4
5
λ: :sprint a
a = 1 : 2 : 3 : 4 : 5 : _ 

但是,如果我们从:: [Integer]的定义中省略了a部分,则对:sprint a的最后一次调用将返回a = _而不是a = 1 : 2 : 3 : 4 : 5 : _。< / p>

为什么?

ANSWER :必须通过:set -XMonomorphismRestriction:set -XNoMonomorphismRestriction在GHCi内打开/关闭单态限制(请参阅下面的Reid Barton评论)。我发现:sprint行为的最佳解释是here

0 个答案:

没有答案