In Haskell, functions are automatically curried. So you don't have to do anything special to make them curried.
Your function roots is of the type roots:: Double -> Double -> Double -> (Double, Double)
. Something like this will typecheck: let a = roots 3.0
because of currying.
In case your roots
function was not curried, then it is likely to have a type like this: roots:: (Double , Double , Double) -> (Double, Double)
which is not the proper way to write function definitons.