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

Alexey Khudyakov alexey.skladnoy at gmail.com
Sun Oct 31 17:59:34 EDT 2010

On Sat, Oct 30, 2010 at 2:07 PM, Henning Thielemann
<schlepptop at henning-thielemann.de> wrote:
> wren ng thornton schrieb:
>> 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)
> Looks like you are about to re-implement numeric-prelude. :-)
Only limited subset. Very limited. Everything is too big to be implemented

> Vector (Complex a) is a vector with respect to both 'a' and 'Complex a'.
It is but it's difficult to encode this. Type class below allows to have
multiple scalars. But then type checker cannot infer type of 2 in expression
`2 *^ vector' and so type signature must be added which is hardly usable

class Module v s where
  (*^) :: s -> v -> v

I think one is forced to convert real number to complex or use some
operations specific to data type.

More information about the Haskell-Cafe mailing list