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
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to