How can I get sqrt
from Int
.
I try so:
sqrt . fromInteger x
But get error with types compatibility.
Using fromIntegral
:
Prelude> let x = 5::Int
Prelude> sqrt (fromIntegral x)
2.23606797749979
both Int
and Integer
are instances of Integral
:
fromIntegral :: (Integral a, Num b) => a -> b
takes your Int
(which is an instance of Integral
) and "makes" it a Num
.
sqrt :: (Floating a) => a -> a
expects a Floating
, and Floating
inherit from Fractional
, which inherits from Num
, so you can safely pass to sqrt
the result of fromIntegral
I think that the classes diagram in Haskell Wikibook is quite useful in this cases.