[Haskell-cafe] Functional dependencies *not* part of the next
bf3 at telenet.be
Thu Jul 12 05:36:43 EDT 2007
I tried to do something in CAL that I could not solve without functional
dependencies. In their support forum, it got mentioned that func.deps
propably won't make into the next Haskell standard... Any comments on that?
Now, the thing I tried to solve was:
data Vector2 a = Num a => V2 a a
class Vector a n | a -> n where
dot :: a -> a -> n
instance Num a => Vector (Vector2 a) a where
dot (V2 x1 y1) (V2 x2 y2) = x1 * x2 + y1 * y2
test1 = dot (V2 1.0 2.0) (V2 3.0 4.0)
Please note this is just some testing code (the math people in here might be
horrified by it ;), although any hints of how to do this in a clearer way
are welcome. As side-note, does Haskell have some easy to use good linear
algebra package for doing 2D, 3D and 4D math? Then I would not be writing
any of this code, although I did find it useful for learning.
Now without the funcdep a -> n in the type class declaration I get
No instance for (Vector (Vector2 t) n)
arising from use of `dot' at l:/Haskell/test/vector.hs:9:8-36
add an instance declaration for (Vector (Vector2 t) n)
In the expression: dot (V2 1.0 2.0) (V2 3.0 4.0)
In the definition of `test1': test1 = dot (V2 1.0 2.0) (V2 3.0 4.0)
CAL seems to have the same problem, and without funcdeps I seem to be stuck
in that language.
PS(1): In the above I was using GHCI with extensions enabled.
PS(2): IMHO CAL is in some aspects easier to get started than Haskell
because of their nice Eclipse plugin and GEM Cutter environment for doing
More information about the Haskell-Cafe