我知道这很有效。
Preulde> 1::Int
1
但这不起作用。
Preude> 1::Integral
我想知道Int和Integral之间的区别。
答案 0 :(得分:6)
Int
是一种类型,Integral
是一种类型。类型类用作类型变量的边界,它们不能直接用作类型。也许您打算使用1 :: Integer
,这是实现Integral
类型类的另一种标准类型。
如果你想要一个多态Integral
,即可以用作Int
或Integer
(或任何实现Integral
的用户定义类型),你可以做let x = 1 :: Integral a => a
之类的事情。请注意,此处Integral
仅用于=>
的左侧,以提供类型变量a
的边界,a
用作右侧的类型。另请注意,您无法在不提供具体类型的情况下实际打印x
的值,因为您需要具体类型来选择要调用的show
方法。