wanted: *evaluator-mode* :compile-lambdas
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
SBCL |
Triaged
|
Wishlist
|
Unassigned |
Bug Description
The reason *EVALUATOR-MODE* defaults to :COMPILE is that otherwise DEFUNs compiled in the REPL would be very slow -- which would be a nasty surprise to many people, we think.
:COMPILE-LAMBDAS would be a halfway house. When evaluating
(eval `(let ((x 0)) (values (lambda () (incf x)) (incf x)))
instead of wrapping the whole thing in a LAMBDA and doing COMPILE & FUNCALL, do something like
(values (funcall (compile nil `(lambda (#:x)
which allows everything but the LAMBDA to be elided from compilation.
The idea is that functions would be relatively speaking slow to eval but fast to run, and everything else would be fast to eval.