[plt-dev] parameterizations rationale

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Mon Feb 9 10:48:57 EST 2009

At Sun, 8 Feb 2009 22:56:21 -0500, Dave Herman wrote:
> I noticed this comment in the '99 Revenge of the Son of Lisp Machine  
> paper:
> "An early version of MrEd supported bundles of parameter values as  
> first-class objects, called parameterizations. ... This generalization  
> turns out to be nearly useless in practice ... Worse,  
> parameterizations defeat the essential purpose of parameters for  
> separating global state from thread-specific state."
> Of course, parameterizations are back. What was the change in thinking  
> that led to bringing them back?

The definition of "parameter" changed to build on thread cells. So, even
if you grab a parameterization and use it in another thread, mutations
in that other thread do not affect the original thread.

Parameterizations turned out to be useful in DrScheme. A REPL
interaction goes back into DrScheme for a while, and then continues
into the user space. Parameterizations let us more easily swap in
different "contexts" as control goes between those worlds.

Posted on the dev mailing list.