如果我定义
data Thing = Shoe
| Ship
| SealingWax
| Cabbage
| King
然后在 IHaskell Notebook 的稍后单元格中输入
thing :: Thing
thing = 4
正如预期的那样,我收到一个错误(“没有由文字'4'引起的(Num Thing)实例”)。但是如果我首先完成一个有效的绑定
thing :: Thing
thing = King
然后稍后,在一个单独的单元格中进行相同的(无效)分配
thing = 4
我没有得到任何错误,并且t: thing
产生thing :: (Num a) => a
.
更令人困惑的是,如果我把
thing = Cabbage
:t thing
thing = 5
:t thing
在一个单元格中,我没有收到任何错误,并且
thing :: Thing
thing :: (Num a) => a
但是一个没有:t
线条的单元格
thing = Cabbage
thing = 5
给出一个错误:
Multiple declarations of ‘thing’
Declared at: :1:1
:2:1
为什么我可以在单独的 IHaskell Notebook 单元格中更改变量的类型?