[Haskell-cafe] Specializing classes with classes
alex
maskif at yahoo.com.au
Sat Dec 29 00:31:04 EST 2007
I see..
(Presumably you meant "instance Alg Sometype",
"instance Vec Sometype" etc.)
I have got it working now, and it looks like:
1) I can't specialise superclass methods with other
class methods, within the class hierarchy, and
2) I have to instantiate each superclass individually,
for any type.
...which is consistent with what you were saying.
Thanks for clearing that up.
Now I know what they meant what they meant by "leave
your OO at the door".
--- ajb at spamcop.net wrote:
...
> What you'll have to do until then is something like
> this:
>
> class Num a => Alg a where
> (<>) :: Mat m => m -> a -> a
>
> multByVec :: (Vec v, Mat m) => m -> a -> a
> multByVec m v = fromColumn (m <> toColumn v)
>
> class Alg v => Vec v where
> toRow, toColumn :: Mat m => v -> m
> fromRow, fromColumn :: Mat m => m -> v
>
> fromRow = fromColumn . transpose
> toRow = transpose . toColumn
>
> class Alg m => Mat m where
> transpose :: m -> m
>
> class Alg SomeType where
> (<>) = multByVec
>
> class Vec SomeType where
> toRow = {- etc etc -}
> {- and so on -}
>
> Sorry, I wish there was a better answer.
>
> Cheers,
> Andrew Bromage
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
Make the switch to the world's best email. Get the new Yahoo!7 Mail now. www.yahoo7.com.au/worldsbestemail
More information about the Haskell-Cafe
mailing list