Q:

Get sqrt from Int in Haskell

How can I get sqrt from Int.
I try so:
sqrt . fromInteger x

But get error with types compatibility.

A:

Perhaps you want the result to be an Int as well?
isqrt :: Int -> Int
isqrt = floor . sqrt . fromIntegral

You may want to replace floor with ceiling or round.
(BTW, this function has a more general type than the one I gave.)

A:

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.

A:

Remember, application binds more tightly than any other operator. That includes composition. What you want is 
sqrt $ fromIntegral x

Then 
fromIntegral x 

will be evaluated first, because implicit application (space) binds more tightly than explicit application ($).
Alternately, if you want to see how composition would work:
(sqrt .  fromIntegral) x

Parentheses make sure that the composition operator is evaluated first, and then the resulting function is the left side of the application.

