`Num a =>是什么?在Haskell类型系统中意味着什么? [英] What does `Num a => a` mean in Haskell type system?
问题描述
如果我强迫Haskell推断数字的类型,我会得到Num a => a
.例如:
If I force Haskell to infer the type of a number I'll get Num a => a
. For example:
Prelude> :t 1
1 :: Num a => a
但是a => a
是什么意思?
推荐答案
1 :: Num a => a
表示1
具有某种类型a
,其中a
是Num
类型类的实例.请注意,Num
不是类型,而是类型类,它描述了各种类型的通用属性.例如,Num
类型类描述数字类型,因此支持基本算术.本地机器整数类型Int
是Num
的实例,任意大小的Integer
,浮点类型Double
甚至有理数类型Rational
都是如此.
1 :: Num a => a
means that 1
has some type a
, where a
is an instance of the Num
typeclass. Note that Num
is not a type, but a typeclass, which describes common properties of various types. The Num
typeclass, for example, describes types that are numeric, and so support basic arithmetic. The native machine integer type Int
is an instance of Num
, as is the arbitrary-sized Integer
, the floating point type Double
, and even the rational number type Rational
.
这篇关于`Num a =>是什么?在Haskell类型系统中意味着什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!