Christophe Weblog Wiki Code Publications Music
initial implementation of support for REPL presentations
authorChristophe Rhodes <csr21@cantab.net>
Tue, 31 Aug 2010 07:54:54 +0000 (08:54 +0100)
committerChristophe Rhodes <csr21@cantab.net>
Tue, 31 Aug 2010 07:54:54 +0000 (08:54 +0100)
There's a lot here that's ugly, unfinished or just downright horrible.
Most notably, presentation support depends on swank-side read-time
evaluation (indicated with Common Lisp syntax, which hilariously is a
comment in R).  We can't support that in general, but we can
special-case the presentation-specific operator.

But then the next difficulty comes along; actually performing that
read-time evaluation needs to happen in a different environment than
the evaluation of the REPL form.  In order to achieve this, we abuse
bquote() the equivalent of Lisp's backquote facility, by calling what
in CL terms would be its macro-function on the parsed, preprocessed
expression; only after doing that (and hence resolving the `read-time'
evaluations) do we evaluate the call itself.

The implementation of presentation protocol messages is also slightly
ugly; having to implement cl:nth-value is particulraly horrible, but
the lack of weak references / weak tables in R (at least as far as I
can tell at the moment) is a cause of niggling concern.


No differences found