我知道这很管用。
Preulde> 1::Int
1但这不管用。
Preude> 1::Integral我想知道Int和Integral之间的区别。
发布于 2015-08-10 12:04:08
Int是一个类型,Integral是一个类型类。类型类被用作类型变量的边界,它们不能直接用作类型。也许您想使用1 :: Integer,它是实现Integral类型类的另一种标准类型。
如果你想要一个多态的Integral,比如既可以用作Int,也可以用作Integer (或者任何实现Integral的用户定义类型),你可以做类似let x = 1 :: Integral a => a的事情。请注意,在这里,Integral仅用于=>的左侧,以提供类型变量a的界限,而a用作右侧的类型。还要注意,如果不给x一个具体的类型,就不能实际打印它的值,因为您需要一个具体的类型来选择要调用的show方法。
https://stackoverflow.com/questions/31910777
复制相似问题