Sorry, forgot to reply to all. ---------- Forwarded message ---------- From: Sean Bartell <wingedtachikoma@gmail.com> Date: Fri, Mar 20, 2009 at 5:58 PM Subject: Re: [Haskell-beginners] Fractional Int To: Zachary Turner <divisortheory@gmail.com> For a type "a" to be Fractional requires there to be: (/) :: a -> a -> a You can't divide an Int by another Int and (in general) get a third Int. You would probably want something like a "Fractionable" typeclass, with (/) :: a -> a -> b which would result in a Rational, but Haskell doesn't have this. 2009/3/20 Zachary Turner <divisortheory@gmail.com>
Why is there no instance of Fractional Int or Fractional Integer? Obviously integers are fractions with denominator 1. I was just doing some basic stuff to get more familiar with Haskell, and was seriously racking my brain trying to figure out why the following wouldn't work:
intToString :: Int -> [Char] intToString n | n<10 = chr (n + (ord '0')):[] intToString n = let q = truncate (n/10) r = n `mod` 10 o = ord '0' ch = chr (r + o) in ch:(intToString q)
(yes, this ends up converting the string in reverse, but that's another issue :P)
I later realized that I could use members of the Integral typeclass such as divMod, mod, etc to make this better, but nonetheless, why should truncate(n/10) be invalid, when n is an Int? changing it to truncate((toRational n)/10) works, but I would expect Integers to already be rational.
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners