[Haskell-cafe] Problem with fundeps.
Henning Thielemann
iakd0 at clusterf.urz.uni-halle.de
Mon Jan 3 07:23:36 EST 2005
On Sun, 2 Jan 2005 karczma at info.unicaen.fr wrote:
> I am afraid that something is wrong with my understanding of multi-
> param classes with dependencies. I tried to generalize one of my old
> packages for quantum *abstract* computations, where state vectors are
> defined as functional objects, whose codomain has some arithmetic.
> It is easy to see that you can define (f <+> g) = \x -> f x + g x
> etc. It should be possible to curry this further, so I defined
>
> class Vspace a v | v -> a
> where
> (<+>) :: v -> v -> v
> (*>) :: a -> v -> v
> -- etc.
>
> instance Vspace a a where
> (<+>) = (+)
> (*>) = (*)
> -- etc. No problem.
>
> instance (Vspace a v) => Vspace a (c->v) where
> f <+> g = \x -> f x <+> g x
> (a *> f) x = a *> (f x)
> -- ...
I had the same problem with the same class
http://www.haskell.org//pipermail/haskell-cafe/2004-March/005979.html
and thus Dylan Thurston advised me to drop functional dependencies.
Here are two implementations using multi-type classes without functional
dependencies. (They wait for unification, yet, sorry.)
http://cvs.haskell.org/darcs/numericprelude/VectorSpace.lhs
http://cvs.haskell.org/darcs/numericprelude/physunit/VectorSpace.hs
More information about the Haskell-Cafe
mailing list