
I've written the following implementation of the algorithm in this article http://www.afjarvis.staff.shef.ac.uk/maths/jarvisspec02.pdf sqRoot n scale = sqRoot' (5*n) 5 where sqRoot' a b | floor (logBase 10 b) >= scale = div b 10 | a >= b = sqRoot' (a-b) (b+10) | otherwise = sqRoot' (a*100) ((100 * (div b 10)) + (mod b 10)) Since this involves whole numbers only, I was surprised by the following run-time error. *Main> sqRoot 2 5 <interactive>:1:0: Ambiguous type variable `t' in the constraints: `RealFrac t' arising from a use of `sqRoot' at <interactive>:1:0-9 `Floating t' arising from a use of `sqRoot' at <interactive>:1:0-9 `Integral t' arising from a use of `sqRoot' at <interactive>:1:0-9 Probable fix: add a type signature that fixes these type variable(s) What am I missing? Logesh Pillay