[Haskell-cafe] Basic type classing question.

Ketil Malde ketil+haskell at ii.uib.no
Wed Sep 21 07:03:29 EDT 2005

Karl Grapone <kgrapone at gmail.com> writes:

> I've just started learning Haskell, and I must admit I'm finding it a
> bit hard to get my head around the typing system...


> What I want to be able to do is add and remove fields while the system
> is running,

While I'm sure you'll get some advanced replies to this, IMHO there is
a contradiction between static (ie. compile time) type safety, and
run-time modification of the types.

If you are happy with dynamic typing, I would encode the data fields
as lists of (keyword,value) pairs, and insert the necessary checks
where appropriate.  I.e. something like:

  type Keyword = String  -- alternative: data Keyword = Name | Address |..
  type Value = String    -- or: data KeyVal = Name String | Number Int |..

  data Employee = E [(Keyword,Value)]
  data Department = D [(Keyword,Value)]

You can easily look up and update the field lists by using standard
Prelude funcitions.

If I haven't seen further, it is by standing in the footprints of giants

More information about the Haskell-Cafe mailing list