
23 Jan
2009
23 Jan
'09
6:04 p.m.
2009/1/23 Olex P
class Vector v where (^+^) :: v -> v -> v
data Vector3 = V3 !Double !Double !Double
instance Vector Vector3 where (V3 x1 y1 z1) ^+^ (V3 x2 y2 z2) = V3 (x1 + x2) (y1 + y2) (z1 + z2)
class Matrix m where (^+^) :: m -> m -> m
data Matrix3 = M3 !Vector3 !Vector3 !Vector3
instance Matrix Matrix3 where (M3 r11 r12 r13) ^+^ (M3 r21 r22 r23) = M3 (r11 ^+^ r21) (r12 ^+^ r22) (r13 ^+^ r23)
Hope this is better :) So yeah... r11 ^+^ r21 just doesn't work.
It works fine if you make Matrix3 an instance of Vector. -- Dan