如果我这样做
functionS (x,y) = y :t functionS functionS :: (a, b) -> b
现在使用此功能:
functionC x y = if (x > y) then True else False :t function
我希望得到:
functionC :: (Ord a, Ord b) => a -> b -> Bool
但我得到:
functionC :: Ord a => a -> a -> Bool
ghci似乎对前面的两个结果没意见,但是为什么它给了我第二个结果呢?为什么没有定义类型变量A和B?
functionS :: (a,b) -> b functionS (x,y) = y
(_,_) (a,b) a b (x,y) x y
(_,_)
(a,b)
a
b
(x,y)
x
y
functionS :: Pair a b -> b functionS (x,y) = y
Ord a Integer String shenanigans
Ord a
Integer
String
functionS