[Haskell-beginners] Re: Encapsulation and Polymorphism
stephen.tetley at gmail.com
Thu Aug 26 03:08:48 EDT 2010
Bear in mind though that existentials are not equivalent to subtyping in OO.
For instance, with example 2.1 from  all you can do with an Obj is
show it, so for the list xs all you can do is show the elements:
data Obj = forall a. (Show a) => Obj a
xs :: [Obj]
xs = [Obj 1, Obj "foo", Obj 'c']
Because Obj is an existential you can't do an case analysis on it - so
you can't write a function like this:
add_one_if_int (Obj (n::Int)) = Obj (n+1)
add_one_if_int (Obj other) = Obj other
There really is nothing you can do with Obj other than show it.
If you are trying to transliterate OO designs, you might quickly find
existentials are too inert to be useful.
On 26 August 2010 07:45, Drew Haven <drew.haven at gmail.com> wrote:
> I think I found the answers to all my questions at
More information about the Beginners