[Haskell-cafe] OO idioms redux
Graham Klyne
GK at ninebynine.org
Wed Oct 13 04:17:09 EDT 2004
Haskell type classes don't really behave as one might expect coming from an
OO perspective; cf.
http://www.ninebynine.org/Software/Learning-Haskell-Notes.html#type-class-misuse
That commentary doesn't say anything about interface inheritance. I don't
offhand have a good answer for that question. In my own code, I guess I
kind-of work around that issue. As for inheritamnce of implementation, I
guess that can be done "by hand", by building a new type that contains the
"base" type.
#g
--
At 18:32 12/10/04 +0000, John Goerzen wrote:
>OK, recently I posed a question about rethinking some OO idioms, and
>that spawned some useful discussion.
>
>I now have a followup question.
>
>One of the best features of OO programming is that of inheritance. It
>can be used to slightly alter the behavior of objects without requiring
>modification to existing code or breaking compatibility with existing
>APIs.
>
>As an example, say I have a ConfigParser class. This class can read in
>configuration files, provides various get/set methods to access them,
>and can write them back out.
>
>Now say I would like to make this a little more powerful. Maybe I want
>to support the use of environment variables in my config file, so if
>there's a reference to $FOO in the file, it will be replaced by the
>contents of $FOO in the environment.
>
>In OO, I would make a new EnvConfigParser class. I'd override the
>read() method. My new read() would probably start by calling the
>parent's read() method, to get parsing for free. Then it could iterate
>over the data, doing its environment variable substitution.
>
>
>Now, in Haskell, we obviously have no objects like this. We do have
>something that provides some of the same benefits -- typeclasses.
>However, from what I can determine, they don't support algorithm
>inheritance like objects do in an OOP. Specifically, it seems impossible to
>have two instances of a single typeclass that work on the same type,
>while having one share most of the code with the other.
>
>I'm wondering if there is a Haskell design pattern that I'm missing that
>would provid ethe kind of benefits that one gets from inheritance in the
>OO world.
>
>-- John
>
>
>--
>John Goerzen
>Author, Foundations of Python Network Programming
>http://www.amazon.com/exec/obidos/tg/detail/-/1590593715
>
>_______________________________________________
>Haskell-Cafe mailing list
>Haskell-Cafe at haskell.org
>http://www.haskell.org/mailman/listinfo/haskell-cafe
------------
Graham Klyne
For email:
http://www.ninebynine.org/#Contact
More information about the Haskell-Cafe
mailing list