[Haskell-cafe] Execution Contexts
k.schupke at imperial.ac.uk
Sat Nov 27 11:55:57 EST 2004
A general point on top-level TWIs. It occurs to me that all variables
are local to
something (function, object, thread, process, machine, network,
world...). I think it
is an error to limit Haskells domain. If we allow unique per process
TWI's) we limit our level of abstraction to a process - haskell cannot
beacuse it cannot handle the multiple process contexts required.
All the attempts at modelling execution contexts therefore seem a better
top-level TWIs which limit us to a single process world model. It seems
the real world
is an infinitely deep nesting of abstractions, so uniqueness is always
relative to its context.
Using the object model, we can have a process object, this object can
of values within the context of a process - which is what Adrian wants.
However if we
want uniqueness at the next level, say the per CPU level, then a CPU
object is the relavent
It seems to me the object model fits perfectly, and what people are
trying to do is
turn modules into primitive objects complete with data-hiding and
(top-level TWIs)... However modules cannot be nested so the model breaks
we end up needing first-class modules anyway.
Of course objects can be modeled another way (see
using the HList library... The syntax is simple enough, but would still
benefit from a little
sytactic sugar (hopefully to be providied by template-haskell, but this
part is a work in
So in conclusion, it seems to me that that objects in Haskell solve all
that top-level TWIs solve, and still allow encapsulation and multiple
contexts to be handled by the RTS. So use them!
Sorry for the rambling explanation and shameless promotion of HLists...
More information about the Haskell-Cafe