|
Subject: Re: On side effects From: Paul Prescod <papresco@xxxxxxxxxxxxxxxxxxxxxxxxx> Date: Wed, 18 Jun 1997 12:27:07 -0400 |
James Clark wrote:
> >While the DSSSL code itself is executing, it is
> > (theoretically at least) isolated even from its parent context.
> >
> > I personally think that this level of firewalling is maybe a little
> > extreme,
>
> But given that inheritance happens in the flow object tree how can it be
> otherwise? Consider
>
> (let ((x (make sequence font-size: (+ (inherited-font-size) 2pt) (literal
> "foo"))))
> (sosofo-append
> (make paragraph font-size: 10pt x)
> (make paragraph font-size: 12pt x)))
>
> The make sequence expression gets evaluated once, but the expression
> specifying the font-size characteristic has to get evaluated twice with a
> different result in each case.
I was thinking more of its execution context than its flow object tree
context, but your email helped me to separate those more clearly in my
mind. "First Class Modes" provide a mechanism for creating an execution
context that can pass down data. It feels vaguely like there could also
be some way to paramaterize construction rules that would not require a
whole new set of construction rules in the first class mode. Typically
one passes state down a Scheme procedure call-tree in parameters. Maybe
something like this:
(process-children nesting-depth: 5 really-complex-font-choice:
*really-complex-font-choice*)
Now that I think about it, I suppose you could emulate that with
first-class modes.
(define (my-process-children #!key nesting-depth
really-complex-font-choice)
(with-mode
(first-class-mode
(element ...)))))
My big concern about modes (first class or otherwise) is that they don't
seem to nest the way I would expect them to:
(element foo (...) )
(mode bar
(element foo (...))
(element qutz (with-mode baz (process-matching-children "baz"))))
(mode baz
(element baz (process-matching-children "foo"))
If I call (with-mode bar) which calls (with-mode baz) I want the
definition for "foo" from "bar". I want construction-rules to overwrite
each other in the "environment" according to nesting. This problem will
become more severe with first-class modes because you will make a small
mode just to pass some information down the tree, but will find that it
changes the construction-rules that get called.
Paul Prescod
DSSSList info and archive: http://www.mulberrytech.com/dsssl/dssslist
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: On side effects, James Clark | Thread | Re: On side effects, James Clark |
| DD: ports, Sebastian Rahtz | Date | Re: DD: Expanded outline for DSSSL , Tony Graham |
| Month |