[Haskell-cafe] convergence of functions of Complex variables

William Lee Irwin III wli at holomorphy.com
Wed Dec 15 05:41:01 EST 2004

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

More information about the Haskell-Cafe mailing list