It is possible of course but your definition doesn't correspond to any
operation in the usual vector algebra. By the way how do you define
(*)? Isn't it 3D vector multiplication?

Krasimir

On 11/29/06, Slavomir Kaslev <[EMAIL PROTECTED]> wrote:
You mean signum = normalize? What do you think of my comments here:

> After giving some thought on signum, I got to the point, that signum
> should be defined so that abs x * signum x = x holds. So it can be
> defined as signum (Vec2 x y) = Vec 2 (signum x) (signum y).

> It turns out that all the functions in Num, Floating, etc. classes can
> be given meaningful definitions for vectors in this pattern. That is f
> (Vecn x1 x2 .. xn) = Vecn (f x1) ... (f xn). And all expected laws
> just work. One can think of that like the way SIMD processor works, it
> does the same operations as on floats but on four floats at parallel.

I think this is the way to define vector instances for Num, Floating,
etc. For vector specific operations, such as normalize, len, dot,
cross, etc. are declared in class Vector.

--
Slavomir Kaslev

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to