如何找出运算符“ +”的类型?

时间:2019-07-14 15:12:01

标签: haskell

在GHCi版本8.6.3(https://repl.it/languages/haskell)中,我想知道如何找出运算符“ +”的类型。我想查看其类型是num a, b,c => a -> b -> c还是num a, b,c => (a,b) -> c

但是我找不到它的类型。它还以未知方式影响下一个表达式。为什么我失败了,我该怎么办?

   :type +
   :type not
<interactive>:1:1: error: parse error on input ‘+’
   :type not
not :: Bool -> Bool
=> "12"

2 个答案:

答案 0 :(得分:6)

这种方式:

> :type (+)
(+) :: Num a => a -> a -> a

还有

> :t (+) 4
(+) 4 :: Num a => a -> a

> :t (+) 4 3
(+) 4 3 :: Num a => a

答案 1 :(得分:3)

在Haskell的控制台中,您必须使用:t键,为其赋予一个值,就像在程序中使用它那样,例如:

plus = +

会给出错误

plus = (+)

可以:

ghci> :t plus
ghci> :t (+)

Num a => a -> a -> b

如此:

plusOne = + 1

也会给你一个错误

但是

plusOne  = (+ 1)
plusOne' = (1 +)

可以:

:t plusOne'
:t plusOne
:t (1 +)
:t (+ 1)

Num a => a -> a

最后:

twoPlusOne = 2 + 1

:t twoPlusOne
:t 2 + 1

Num a => b