Additionally I would like to note that Haskell's ad hoc polymorphism
solution, the system of type classes, allows for extensions predicated
on a type class already being implemented:

-- no dependencies on other type classes
instance SomeClass SomeType where
  ...

-- depend on OtherClass being implemented
instance (OtherClass a) => SomeClass a where
  ...

There are other differences between type classes and protocols, but
this is a major one. I really like this feature of type classes. (Of
course in Haskell it is pretty much necessary.) I think it would be
great to have something similar work for protocols eventually, but I
don't think it necessarily needs to look similar or be part of the
protocol mechanism proper. For example, it is possible that the best
balance of performance, complexity and expressiveness can be achieved
using a mixture of protocols as they currently are with open predicate
dispatch built on top of them.

Given that the current situation seems to cause some aesthetic
discomfort to some people, but otherwise causes no great problems, I
think the rational thing to do is to weigh the possible approaches
carefully, experiment with various implementations and avoid jumping
at any particular solution prematurely.

Cheers,
M.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to