According to the definition of the class Bounded, minBound and maxBound
have types

  minBound :: Bounded a => a
  maxBound :: Bounded a => a
           
Suppose I define the function 

f (minBound, maxBound) = (maxBound, minBound)

shouldn't its type be 

  f :: (Bounded a, Bounded b, Bounded c, Bounded d) => (a,b) -> (c,d)  ?

hugs gives me the following answer

Main> :t f
f :: (a,b) -> (b,a)   

jbb



Reply via email to