My query was in response to an earlier post claiming that ai was a Rational, 
which post he almost simultaneously said to ignore.

I've used GHC and like it better than Hugs, but the Fedora Linux package is 
humongous and I'm only on dialup right now.

I'm still not sure what some of the error messages I was getting were about. As 
I wrote the function I tried to be aware of what "mixed mode" operations were 
kosher ala

Main> 1 / (6%7)
7 % 6
Main> 1 - (6%7)
1 % 7
Main> (6%7) - 1
(-1) % 7
Main> 

but still kept getting kicked out.

Better error messages certainly couldn't hurt.

Thanks.

Michael


--- On Mon, 3/30/09, Ketil Malde <ke...@malde.org> wrote:

From: Ketil Malde <ke...@malde.org>
Subject: Re: [Haskell-cafe] Rational and % operator remix
To: "michael rice" <nowg...@yahoo.com>
Cc: "Brandon S. Allbery KF8NH" <allb...@ece.cmu.edu>, haskell-cafe@haskell.org
Date: Monday, March 30, 2009, 2:48 AM

michael rice <nowg...@yahoo.com> writes:

> cf2 :: Rational -> [Int]
> cf2 a = let ai = floor a          <-- Doesn't this make ai an Int?   -Michael
>             in
>               if a == (toRational ai)
>                 then [ai]
>                 else ai : cf2 (1 / (a - ai))

One thing that you could try, is ghci in addition to (or instead of)
Hugs.  That will give you another take on the error messages, where
Hugs says:

> 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

ghci will tell you:

    Couldn't match expected type `Rational' against inferred type `Int'
    In the second argument of `(-)', namely `ai'
    In the second argument of `(/)', namely `(a - ai)'
    In the first argument of `cf2', namely `(1 / (a - ai))'

So while this is (almost) right:

> cf2 a = let ai = floor a          <-- Doesn't this make ai an Int?   -Michael

The problem is the subtraction of ai from a, which forces them to be
the same type.  I tend to find ghc's messages more informative than
Hugs's (but perhaps it is just that I am more familiar with ghc?).

-k
-- 
If I haven't seen further, it is by standing in the footprints of giants



      
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to