On Tue, Mar 19, 2013 at 3:58 PM, Christopher Done <[email protected]>wrote:
> From the paper Fun with Type Funs, it's said: > > > One compelling use of such type functions is to make type > > coercions implicit, especially in arithmetic. Suppose we want to be able > to > > write add a b to add two numeric values a and b even if one is an Integer > > and the other is a Double (without writing fromIntegral explicitly). > > And then an Add class is defined which can dispatch at the type-level > to appropriate functions which resolve two types into one, with a > catch-all case for Num. > > Has anyone put this into a package, for all common arithmetic > operations? I would use it. Doing arithmetic stuff in Haskell always > feels labored because of having constantly convert between number > types. > I prefer the current way (which is interestingly what Go chose as well). With implicit casts it's easy to shoot yourself in the foot e.g. when doing bit-twiddling. These two are different f :: Word8 -> Int -> Word32 f w8 n = fromIntegral (w8 `shiftL` n) f' :: Word8 -> Int -> Word32 f' w8 n = (fromIntegral w8) `shiftL` n
_______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
