[Haskell-cafe] Encapsulation in Haskell

Greg Woodhouse gregory.woodhouse at sbcglobal.net
Thu Dec 22 16:53:34 EST 2005

--- Philippa Cowderoy <flippa at flippac.org> wrote:

> On Thu, 22 Dec 2005, Creighton Hogg wrote:
> > Hi guys,
> > So one of the big things in object oriented programming is 
> > encapsulation, and I'm wondering how to do it properly in 
> > Haskell.  How do you define new data types but minimize the 
> > dependence of external packages on the exact nature of the 
> > data definition?
> > 
> Use modules. Don't expose the constructors.

The trick, though, is that objects are stateful things. If you want to
program a binary search tree, then insertion ought to return an
entirely new tree, just as if objects were all immutable, and
operations on those objects simply creaqte new objects exactly like the
existing ones (except for the one change). I've thought about trying to
model this using monads and actions, but I'm not sure that's the best approach.

Gregory Woodhouse  <gregory.woodhouse at sbcglobal.net>
"Interaction is the mind-body problem of computing."
--Philip L. Wadler

More information about the Haskell-Cafe mailing list