[plt-scheme] Parameters versus continuation marks
At Mon, 14 Jan 2008 13:59:14 +0000, Dave Gurnell wrote:
> I'm sure I need to convert call-with-transaction to a macro to get
> access to the position of the call site. However, I'm not sure of the
> "correct" way of passing the information to insert-into-database. It
> seems like I have at least two options: continuation marks and
> parameters, but I don't know the relative merits of which, or which I
> should choose in this type of situation.
>
> Can anyone offer any advice (or information on the difference between
> the two)?
Parameters are just continuation marks indirected through a thread
cell, so that different threads can imperatively mutate the value.
I expect that a continuation mark is sufficient for this problem, but
the extra indirection in a parameter won't normally hurt, and there's a
bit more syntactic support for parameters.
> PS - Transactions may be nested, and I'd like to log the position the
> outermost call-with-transaction.
The simplest way to implement this is probably to look up the current
value before binding a new one, and keep the old value if there is one.
With continuation marks, you might instead get a list of all bindings
in the current continuation and pick the earliest one, but then you'd
have to be careful about a tail call possibly replacing a value that
you want to keep.
Matthew