Я имею в виду, например,
f :: (Enum a) => a -> a --without this line, there would be an error
f = succ
Это потому, что succ требует, чтобы его параметр был перечислимым (succ :: (Enum a) => a -> a)
но для (+)
f = (+) --ok
Хотя объявление (+) (+) :: (Num a) => a –> a –> a.
Я имею в виду, почему мне не нужно объявлять f как f :: (Num a) => a –> a –> a?