Eli Barzilay wrote:
After talking to Sam about it, he pointed out the further problems
that you get into with TR's limitations wrt the repl. A potentially
simple solution for this would be a variant of the the interactions
thing that will get some code then run it as a *module*, and show the
results, instead of using the evaluator for the examples. Something
along the lines of:
(parameterize ([sandbox-output (current-output-port)])
(kill-evaluator
(make-module-evaluator "#lang racket\n(+ 1 2)\n")))
so the examples are changing from repl-input/-output to
definitions-window/interactions-results. This is probably not hard to
do, but it will still imply an expensive cost for TR which is
much slower to start even with everything shared.
Yet another option, one that will be much faster but more difficult to
implement, is to slap all of the examples into one module, then have a
custom evaluation handler so you can see which output is printed for
each piece of input. This will require some delaying for text
rendering, and you'll have the no-redefinitions problem in a worse
way.
These sound like nice ideas, and I'd love to try them, but I'm still
trying the factory method. I have only a shadow of a mental model of
sandboxed evaluation, so I can't make sense of this error:
(define make-bigfloat-eval
(make-base-eval-factory
'(typed/racket/base "../bigfloat.rkt")))
(make-bigfloat-eval)
namespace-attach-module: a different module with the same name is
already in the destination namespace, for name:
"/home/neil/install/src/gr2/collects/scheme/base.rkt"
This is from the latest sources on github.
I get the same error using `make-eval-factory', or leaving out
`typed/racket/base', or replacing the module paths with '(ffi/unsafe) or
apparently anything else. The only things that seem to work are
(make-base-eval-factory '()) and (make-eval-factory '()).
I couldn't find a non-trivial example of using eval factories in the
collects, but what I tried *looks* fine according to the docs.
(On the plus side, the second time I evaluate (make-bigfloat-eval), I
get the error WAY faster. So... improvement!)
Neil T
_________________________________________________
For list-related administrative tasks:
http://lists.racket-lang.org/listinfo/users