On 2006-09-11, Henning Thielemann <[EMAIL PROTECTED]> wrote: > > On Sun, 10 Sep 2006, Aaron Denney wrote: > >> >> Of course, there's always a typeclass, where we could add all sorts of >> >> other encodings of the Peano axioms, such as binary trees,, but I don't >> >> see that that buys us much if we don't also get access to operations >> >> beyond them, such as (an _efficient_) `div` for fastexp. >> > >> > I don't see why Natural can't have an instance of whatever >> > class ends up owning "div". It's perfectly well behaved on >> > Naturals. >> >> True. It seems odd to have a multiplicative (pseudo) inverse, but >> not an additive, though. Breaking up the numeric hierarchy too finely >> seems like it would be a pain -- take it to the limit of a >> separate class per function. What else would you drag in with "div"? >> "mod", (*), ...? > > > from http://darcs.haskell.org/numericprelude/src/Algebra/Core.lhs : > >> class (Num a) => Integral a where >> div, mod :: a -> a -> a >> divMod :: a -> a -> (a,a) >> >> -- Minimal definition: divMod or (div and mod) >> div a b = fst (divMod a b) >> mod a b = snd (divMod a b) >> divMod a b = (div a b, mod a b)
That particular division means that Naturals can't support div because they're not a ring, which the (Num a) in that snippet above means for this numeric hierarcy, right? So this does drag in div, mod and (*), which all seem mostly reasonable, but it also drags in (-) and "negate", which you don't want for Naturals. -- Aaron Denney -><- _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe