O'Haskell OOP Polymorphic Functions
Fergus Henderson
fjh@cs.mu.oz.au
Tue, 30 Jan 2001 21:37:18 +1100
On 30-Jan-2001, Ashley Yakeley <ashley@semantic.org> wrote:
> At 2001-01-17 17:03, Lennart Augustsson wrote:
>
> >You seem to want dynamic type tests.
...
> >You might want to look at existential types; it is a similar feature.
>
> I seem to run into a similar problem:
>
> --
> class BaseClass s
> data Base = forall a. BaseClass a => Base a
>
> class (BaseClass s) => DerivedClass s
> data Derived = forall a. DerivedClass a => Derived a
>
> upcast :: Derived -> Base
> upcast (Derived d) = Base d
>
> downcast :: Base -> Maybe Derived
> --
>
> How do I define downcast?
class BaseClass s where
downcast_to_derived :: s -> Maybe Derived
--
Fergus Henderson <fjh@cs.mu.oz.au> | "I have always known that the pursuit
| of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh> | -- the last words of T. S. Garp.