Thank does sound like a pain, but it's better than putting fromIntegral all over my code. Why can't Haskell unify a an expected float with an infered int? It seems that this would make life alot easier.
-mike On Sun, Mar 02, 2003 at 11:28:00AM +0000, Jorge Adriano wrote: > > > "Mike T. Machenry" <[EMAIL PROTECTED]> writes: > > > I recently desided I wanted a bunch function to return > > > float instead of Int. [...] I found fromInteger but it > > > didn't seem to work on the return value of the cardinality > > > function for instance. > > > > Try fromIntegral, which works for Int and Integer, too. > > > Casting an Integral value to a Fractional value to perform arithmetic > operations, is a very common need and I don't like adding fromIntegral > everywhere, so ended up writing a (very simple) module with generalized > arithmetic operators (see attachment). The � next to the operations indicate > a cast from an Integral to a Fractional value. > > J.A. > > > module CrossTypeOps where > > > -- Addition > (+�) :: (Fractional a, Integral b)=> a -> b -> a > (+�) x n = x+fromIntegral n > > (�+) :: (Integral a, Fractional b)=> a -> b -> b > (�+) n x = fromIntegral n + x > > (�+�) :: (Integral a, Fractional b)=> a -> a -> b > (�+�) m n = fromIntegral m+fromIntegral n > > > -- Difference > (-�) :: (Fractional a, Integral b)=> a -> b -> a > (-�) x n = x-fromIntegral n > > (�-) :: (Integral a, Fractional b)=> a -> b -> b > (�-) n x = fromIntegral n - x > > (�-�) :: (Integral a, Fractional b)=> a -> a -> b > (�-�) m n = fromIntegral m-fromIntegral n > > > -- Multiplication > (*�) :: (Fractional a, Integral b)=> a -> b -> a > (*�) x n = x*fromIntegral n > > (�*) :: (Integral a, Fractional b)=> a -> b -> b > (�*) n x = fromIntegral n * x > > (�*�) :: (Integral a, Fractional b)=> a -> a -> b > (�*�) m n = fromIntegral m*fromIntegral n > > > -- Division > (/�) :: (Fractional a, Integral b)=> a -> b -> a > (/�) x n = x / fromIntegral n > > (�/) :: (Integral a, Fractional b)=> a -> b -> b > (�/) n x = fromIntegral n / x > > (�/�) :: (Integral a, Fractional b)=> a -> a -> b > (�/�) m n = fromIntegral m / fromIntegral n > > > -- Priorities > infixl 6 +�, �+, �+�, -�, �-, �-� > infixl 7 *�, �*, �*�, /�, �/, �/� > > > _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell
