[Haskell-cafe] vector-space and standard API for vectors

wren ng thornton wren at freegeek.org
Fri Oct 22 21:11:41 EDT 2010


On 10/22/10 8:46 AM, Alexey Khudyakov wrote:
> Hello everyone!
>
> It's well known that Num & Co type classes are not adequate for vectors
> (I don't mean arrays). I have an idea how to address this problem.
>
> Conal Elliott wrote very nice set of type classes for vectors.
> (Definition below). I used them for some time and quite pleased. Code is
> concise and readable.
>
>  > class AdditiveGroup v where
>  > zeroV :: v
>  > (^+^) :: v -> v -> v
>  > negateV :: v -> v
> [...]
> I'd like to know opinion of haskellers on this and specifically opinion
> of Conal Eliott as author and maintainer (I CC'ed him)

Just my standard complaint: lack of support for semirings, modules, and 
other simple/general structures. How come everyone's in such a hurry to 
run off towards Euclidean spaces et al.?

I'd rather see,

     class Additive v where -- or AdditiveMonoid, if preferred
         zeroV :: v
         (^+^) :: v -> v -> v

     class Additive v => AdditiveGroup v where
         negateV :: v -> v

     type family Scalar :: * -> *

     class Additive v => LeftModule v where
         (*^) :: Scalar v -> v -> v

     class Additive v => RightModule v where
         (^*) :: v -> Scalar v -> v

     ...

Though I don't know how much that'd affect the niceness properties you 
mentioned.

-- 
Live well,
~wren


More information about the Haskell-Cafe mailing list