<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">I'm a Lisper, kind of feeling my way around here in Haskell, so please bear with me.<br><br>I did the things you suggested, but I think the last one may have gotten garbled. Anyway, this is what I ended up with<br><br>cf2 :: Rational -&gt; [Int]<br>cf2 a = let ai = floor a<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if a == (toRational ai)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; then [ai]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else ai : cf2 (1 / (a - ai))<br><br>but I'm still at least one error short of a clean run<br><br>Main&gt; :load cf.hs<br>ERROR "cf.hs":7 - Type error in application<br>*** Expression&nbsp;&nbsp;&nbsp;&nbsp; : ai : cf2 (1 /
 (a - ai))<br>*** Term&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ai<br>*** Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Ratio Integer<br>*** Does not match : Int<br><br><br>Where did I go wrong or what did I leave out?<br><br>Michael<br><br><br>--- On <b>Sun, 3/29/09, Lennart Augustsson <i>&lt;lennart@augustsson.net&gt;</i></b> wrote:<br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><br>From: Lennart Augustsson &lt;lennart@augustsson.net&gt;<br>Subject: Re: [Haskell-cafe] Rational and % operator remix<br>To: "michael rice" &lt;nowgate@yahoo.com&gt;<br>Cc: haskell-cafe@haskell.org<br>Date: Sunday, March 29, 2009, 2:29 PM<br><br><div class="plainMail">You can use floor in a Rational directly, no need to take it apart and divide.<br><br>There is no need to write (toRational 1), just write 1.<br><br>Don't write (subtract ai a), write (ai - i).<br><br>You also have a
 type error; the ai should no be a Rational, so you<br>need to move to toRational call to the comparison.<br><br>&nbsp; -- Lennart<br><br>2009/3/29 michael rice &lt;<a ymailto="mailto:nowgate@yahoo.com" href="/mc/compose?to=nowgate@yahoo.com">nowgate@yahoo.com</a>&gt;:<br>&gt; Hi,<br>&gt;<br>&gt; Thanks again for the help last night.<br>&gt;<br>&gt; The second function cf2 is an attempt to reverse the process of the first<br>&gt; function, i.e., given a rational number it returns a list of integers,<br>&gt; possibly infinite, but you shouldn't get into trouble if you use 98%67 as<br>&gt; input (output should be [1,2,6,5]). The interpreter is complaining about the<br>&gt; '=' following the 'in' keyword. Is there a better way to state this?<br>&gt;<br>&gt; Michael<br>&gt;<br>&gt; import Data.Ratio<br>&gt; cf :: [Int] -&gt; Rational<br>&gt; cf (x:[]) = toRational x<br>&gt; cf (x:xs) = toRational x + 1 / cf xs<br>&gt;<br>&gt; cf2 :: Rational -&gt;
 [Int]<br>&gt; cf2 a = let ai = toRational (floor ((numerator a) / (denominator a)))<br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in<br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if a = ai<br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; then [a]<br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else ai : cf2 ((toRational 1) / (subtract ai a))<br>&gt;<br>&gt;<br>&gt;<br>&gt; _______________________________________________<br>&gt; Haskell-Cafe mailing list<br>&gt; <a ymailto="mailto:Haskell-Cafe@haskell.org" href="/mc/compose?to=Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>&gt; <a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>&gt;<br>&gt;<br></div></blockquote></td></tr></table><br>