
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