Hi There,
Here is a very simple haskell program I have written to find whether a number is prime or not, which doesn't give me any compilation error but gives following run-time error :
Any help would help me move ahead, I know that the type concepts is what I am lacking, anly pointer to simple/good article/paper would definitely help.
Lots of thannx jut even to look at the mail :-)
Regards
Kaushal
Run Time Error :
kaushal > isPrime1 171
<interactive>:1:0:
Ambiguous type variable `t' in the constraints:
`Integral t'
arising from a use of `isPrime1' at <interactive>:1:0-11
`Floating t'
arising from a use of `isPrime1' at <interactive>:1:0-11
`RealFrac t'
arising from a use of `isPrime1' at <interactive>:1:0-11
Probable fix: add a type signature that fixes these type variable(s)
kaushal >
Program :
isPrime1 x =
let canDivide num 0 = 0
canDivide num 1 = 0
canDivide num divisor = if ((mod num divisor) == 0) then 1
else canDivide num (divisor - 1)
in
if ( x == 1 )
then putStrLn("1 is Neither prime nor composite!!!")
else if ((canDivide x first_div) == 1)
then putStrLn(show(x) ++ " is not a Prime Number!!!")
else putStrLn(show(x) ++ " is a Prime Number!!!")
where
first_div :: Integral a => a ; first_div = round (sqrt x)