I am for ever obliged to this haskell community. Who would have thought that Prof.Hudak would reply instantly, from on-the-road. I am reading his SOE. Thanks so much.<br><br>I went with peterv&#39;s response after trying so many things. 
<br>I tried to change to : equilateralTri Window -&gt; Float -&gt; Float -&gt; Float -&gt; IO()<br>which bombed because polygon wants list of integer-pairs.<br><br>I read the definitions of fromIntegral and round and they are defined as :
<br>fromIntegral :: (Num b, Integral a) =&gt; a -&gt; b<br>round :: (RealFrac a, Integral b) =&gt; a-&gt;b<br>Is it proper/ok to defines them as :<br>fromIntegral :: (a::Integral) -&gt; (b::Num)<br>and<br>round :: (a::RealFrac) -&gt; (b::Integral)&nbsp; ?
<br>Is RealFrac is-a Num ?<br>Does the order matters in (Num b,Integral a) =&gt; a -&gt; b or<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Integral a,Num b) =&gt; a -&gt; b<br><br>With your encouragements, I&#39;ll keep pluuging. Thanks.
<br>- br<br><br><div><span class="gmail_quote">On 6/27/07, <b class="gmail_sendername">peterv</b> &lt;<a href="mailto:bf3@telenet.be">bf3@telenet.be</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
I&#39;m also a haskell newbie, but I&#39;ll try to help; the experts here will<br>correct me if I&#39;m wrong.<br><br>The compiler cannot in all cases infer the type of a number. pi can be a<br>Float, a Double, or even a complex number.
<br><br>Furthermore unlike in C/C++ you cannot just mix integer and floating<br>operations.<br><br>For example, the following works for me:<br><br>f :: Int -&gt; Int<br>f side = round ( (fromIntegral side) * sin ( (pi::Float) / 3 ) )
<br><br>or easier<br><br>f side = round ( (fromIntegral side) * sin (pi / 3.0) )<br><br>I&#39;m sure the experts here will have a better solution.<br><br>Peter<br>-----Original Message-----<br>From: <a href="mailto:haskell-cafe-bounces@haskell.org">
haskell-cafe-bounces@haskell.org</a><br>[mailto:<a href="mailto:haskell-cafe-bounces@haskell.org">haskell-cafe-bounces@haskell.org</a>] On Behalf Of Balu Raman<br>Sent: Wednesday, June 27, 2007 1:25 PM<br>To: <a href="mailto:Haskell-Cafe@haskell.org">
Haskell-Cafe@haskell.org</a><br>Subject: [Haskell-cafe] New New newbie question/help<br><br>Hi,<br>Hope someone can help me, just starting out with SOE.My code :<br>module Main where<br>import Graphics.SOE.Gtk<br><br>spaceClose :: WIndow -&gt; IO()
<br>spaceClose w = do k &lt;- getKey w<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if k == &#39; &#39; then closeWindow w<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else spaceClose w<br><br>equilateralTri :: Window -&gt; Int -&gt; Int -&gt; Int -&gt; IO()
<br>equilateralTri w x y side<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = drawInWindow w (withColor Red<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (polygon<br>[(x,y),(a,b),(x,y)]))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b = y + side * sin(pi/3)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a = x + side * cos(pi/3)<br>main =<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; runGraphics(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do w &lt;- openWindow &quot;Equilateral<br>Triangle&quot; (400,400)
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;equilateralTri w 50 300 200<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;spaceClose w<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br><br>all of the above in file triangle.hs<br>when I do a :l triangle.h
 in ghci,&nbsp;&nbsp;I get the following error<br>triangle.hs:17:36:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;No instance for (Floating Int)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arising from use of &#39;pi&#39; at triangle.hs:17:36-37<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Probable fix: add an instance declaration for (Floating Int)
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;In the first argument of &#39;(/)&#39;, namely &#39;pi&#39;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;In the first argument of &#39;cos&#39;, namely &#39;(pi / 3)&#39;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;In the second argument of &#39;(*)&#39;, namely &#39;cos (pi/3)&#39;
<br>Failed, modules loaded: none<br><br>Can someone help me what&#39;s going on to a brand new newbie. All I can<br>figure out is that some type mismatch between float and int . I tried<br>various<br>combinations of lets and wheres and I still get the same complaints.
<br>I am just linearly studying SOE<br>Thanks,<br>- br<br>_______________________________________________<br>Haskell-Cafe mailing list<br><a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br><a href="http://www.haskell.org/mailman/listinfo/haskell-cafe">
http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br><br></blockquote></div><br>