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