Skip to content
  • Christophe Rhodes's avatar
    initial implementation of support for REPL presentations · e35149b4
    Christophe Rhodes authored
    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.
    e35149b4