Nessuno che io conosca. Vi sono tuttavia molti Lisp che possono salva la sua immagine in modo che tu possa iniziare con tutte le definizioni. Però non sarai in grado di vedere effettivamente le definizioni.
Avrei mantenuto le mie definizioni in un file (o nell'IDE come in DrRacket) e ho avviato il repl con il caricamento di quel file. Quando cambi definizione, copia / incolla di nuovo nel tuo file di definizione quando sei soddisfatto.
In alternativa, potresti fare un piccolo REPL:
;; These are outside in case we break out of the REPL
(define env '())
(define (print-env)
(newline)
(for-each (lambda (x) (display (cdr x)) (newline)) env)
(newline))
(define (repl)
(define (define? expr)
(and (pair? expr)
(or (eq? 'define (car expr))
(eq? 'set! (car expr)))))
(define (define-name expr)
(if (pair? (cadr expr))
(caadr expr)
(cadr expr)))
(define (extend-env name expr)
(let ((found (assq name env)))
(if found
(set-cdr! (car found) expr)
(set! env (cons (cons name expr) env)))))
(let ((expr (read)))
(if (define? expr)
(let ((name (define-name expr)))
(eval expr (interaction-environment))
(extend-env name expr)
(repl))
(let ()
(display (eval expr (interaction-environment)))
(newline)
(repl)))))
(display "Outer REPL: If an error occurs, rerun with (repl)\nIn both REPL and outside yo may print definitions by calling (print-env)\n")
(repl)
Questo è molto grezzo. Al primo errore uscirà dal ciclo. Tuttavia, in sostituzione e fuori luogo, è possibile stampare le definizioni eseguendo (print-env).