[Haskell-cafe] Having typing problem with "tan" function.
daniel.is.fischer at web.de
Thu Oct 12 20:46:20 EDT 2006
Am Freitag, 13. Oktober 2006 02:22 schrieb Edward Ing:
> 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:
> 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
Then it should work.
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
More information about the Haskell-Cafe