[Haskell-cafe] Num instances for 2-dimensional types

Sönke Hahn shahn at cs.tu-berlin.de
Mon Oct 5 08:40:31 EDT 2009


Hi!

I often stumble upon 2- (or 3-) dimensional numerical data types like

    (Double, Double)

or similar self defined ones. I like the idea of creating instances for Num for 
these types. The meaning of (+), (-) and negate is clear and very intuitive, i 
think. I don't feel sure about (*), abs, signum and fromInteger. I used to 
implement

    fromInteger n = (r, r) where r = fromInteger n

, but thinking about it, 

    fromInteger n = (fromInteger n, 0)

seems very reasonable, too. 

Any thoughts on that? How would you do it?

btw: These are two examples i looked at in hackage:
Data.Complex.Complex (which is special, cause it is mathematically defined, 
what (*), abs, signum and fromInteger should do (i think))

and

Physics.Hipmunk.Common.Vector 
(http://hackage.haskell.org/packages/archive/Hipmunk/5.0.0/doc/html/Physics-
Hipmunk-Common.html#9)


Sönke


More information about the Haskell-Cafe mailing list