
On Wed, Dec 15, 2004 at 02:07:10AM -0800, William Lee Irwin III wrote:
This does not work as expected on Complex numbers due to some odd typechecking hassles apparently associated with abs. How do I get this to typecheck for both real (e.g. Double) and Complex arguments?
On Wed, Dec 15, 2004 at 10:28:18AM +0000, Ross Paterson wrote:
abs :: Num a => a -> a, whereas you want something that returns a Double. You could define class Norm a where norm :: a -> Double instance Norm Float where norm = realToFrac . abs instance Norm Double where norm = abs instance RealFloat a => Norm (Complex a) where norm = realToFrac . magnitude and use norm instead of abs.
Thanks; this appears to do the trick for me. Something of this kind would be useful to have in the std. libraries, at least for me. -- wli