[Haskell-cafe] [Haskell] Defining Cg, HLSL style vectors in Haskell

Henning Thielemann lemming at henning-thielemann.de
Wed Nov 29 06:16:11 EST 2006

On Tue, 28 Nov 2006, Brian Hulley wrote:

> While it may be tempting to want to use symbolic operators like + and -,
> these quickly become very confusing when more distinctions need to be made
> (eg between cross product, dot product, and scaling, or between transforming
> a position versus transforming a direction) so I'd argue that for
> readability descriptive names are better than symbols:
>     class Num a => Vector v a where
>         plus :: v a -> v a -> v a
>         minus :: v a -> v a -> v a
>         cross :: v a -> v a -> v a
>         dot :: v a -> v a -> a
>         scale :: a -> v a -> v a
>         magSquared :: v a -> a

I'm currently even thinking about an alternative of the multi-parameter
class Vector that is Haskell 98. The problem with the multi-parameter type
class is, that you cannot define instances where 'a' is a complex number
type, say
  Num a => Vector [Complex a] (Complex a)

More information about the Haskell-Cafe mailing list