问题
How can I have multiple class constraints, so if A
is an Eq
and B
is a Num
, I could say either
f :: Eq a => a -> b`
or
f :: Num b => a -> b
So, how can I have Eq a =>
and Num b =>
at the same time?
f :: Eq a => Num b => a -> b
,f :: Eq a -> Num b => a -> b
, andf :: Eq a, Num b => a -> b
didn't do what I wanted.
回答1:
They're usually called class constraints, as Eq
and Num
are called type-classes.
How about this?
f :: (Eq a, Num b) => a -> b
The parentheses are significant.
来源:https://stackoverflow.com/questions/11093847/haskell-type-signature-with-multiple-class-constraints