λ> :t 1
1 :: Num t => t
λ> :t pi
pi :: Floating a => a
In the examples above, the type-checker infers a type-class rather than a concrete type for the two constants. In Haskell, the Num class is the most general numerical one (since it encompasses integers and reals), but pi must...