Proposal: extending user defined eval on implicit evaluation
Posted: Thu Feb 17, 2011 4:43 am
Currently, user defined eval is limited on explicit occurences:
Although this example only show need for such eval on top level, it is simplified example; redefined eval should replace all implicit calls of eval. Why not using explicit eval everywhere where it is needed? Because code would explode to something like
Not impossible, but troublesome.
Code: Select all
(setf original-eval eval)
(constant 'eval (lambda(x)(inc eval-counter)
(print eval-counter ": " x "=>")
(println (original-eval x))))
(eval '((lambda(x)(+ x 2)) 3)); works OK
; main program
(setf f (lambda(x)(+ x 2)))
(f 4) ; used original-eval, not eval
Code: Select all
((eval 'setf) (eval 'f) (eval '(lambda(x)((eval '+) (eval 'x) (eval '2))))
((eval 'f) (eval '4)).