【发布时间】:2015-11-13 04:02:42
【问题描述】:
如果我定义
data Thing = Shoe
| Ship
| SealingWax
| Cabbage
| King
然后在 IHaskell Notebook 的稍后单元格中输入
thing :: Thing
thing = 4
如预期的那样,我收到一个错误(“No instance for (Num Thing) from the literal ‘4’”)。但是,如果我首先完成一个有效的绑定与
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 单元格中更改变量的类型?
【问题讨论】:
标签: haskell types casting ihaskell