如何在Haskell中读取函数类型签名?

时间:2017-07-28 01:09:17

标签: haskell

给定一个向Int添加一个的函数,我们可以看到它的类型签名:

Prelude> addOne :: Int -> Int; addOne x = x + 1
Prelude> :t addOne
addOne :: Int -> Int

签名意味着addOne获取Int并返回Int。很简单。相反,如果我们定义一个函数而不指定一个类型:

Prelude> anotherAddOne x = x + 1
Prelude> :t anotherAddOne
anotherAddOne :: Num a => a -> a

现在我们正在处理Num而不是Int这是有意义的,但是阅读Num a => a -> a的方式是什么?这里=>->有什么区别?

1 个答案:

答案 0 :(得分:2)

anotherAddOne :: Num a => a -> a

此处=>分隔类约束和类型。在此示例中,Num a是类约束,它由类Num和类型变量a组成。完整签名声明对于a的任何类型Num,函数anotherAddOne的类型为a -> a