Am Freitag, 13. Oktober 2006 02:22 schrieb Edward Ing:
> Hi,
> I am new to Haskell, so the following problem is probably easy for you to
> spot but difficult for me. Any pointers would be appreciated.
> In GHCI on a load I am getting the following message:
>
> SSnowflake.hs:41:45:
>     No instance for (Floating Int)
>       arising from use of `pi' at Snowflake.hs:41:45-46
>     Probable fix: add an instance declaration for (Floating Int)
>     In the first argument of `(/)', namely `pi'
>     In the first argument of `tan', namely `(pi / 3)'
>     In the second argument of `(*)', namely `(tan (pi / 3))'
> Failed, modules loaded: none.
>
>
> When I put the expression "tan ( pi / 3)" at the GHCI interpreter prompt I
> get a value, but this is not accepted on a load the code.
>
> Here is the code:
> >>>> code
>
> triangle :: Window -> (Point,Point) -> Int -> IO ()
> triangle window ((x1,y1), (x2,y2)) size =
>        let    height = fromIntegral(y2 - y1) * 3 / 2
>               halfWidth =  height  * (tan (pi / 3 )) in
>                       drawInWindow window (withColor (sizeColorMap size)
>                        (polygon [(x1,y1),( x1 - halfWidth, height ), (x1 + 
> halfWidth, height)]
> ))
>
The co-ordinates must have type Int, I believe, tan has type 
Floating a => a -> a.
However, Int is not an instance of the Floating class.
What you ought to do is convert height and halfWidth to Int via round, floor 
or ceiling.
Then it should work.

Cheers,
Daniel

> _______________________________________________
> Haskell-Cafe mailing list
> [email protected]
> http://www.haskell.org/mailman/listinfo/haskell-cafe

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to