Reputation: 486
I defined an evaluator in common lisp that can simply be called like:
(repl)
From then on, the repl can interpret function calls like (.cos arg) that are otherwise unknown to lisp.
Ofcourse, to use it, one has to call (repl) first, or lisp doesn't know what .cos is.
I would like to be able to simply call (.cos 90) though, and have it run in the repl. Is there anyway to use lisp's reflection to intercept all user input and call another function before it?
Thanks!
Upvotes: 0
Views: 126
Reputation: 48745
The better way would be to make my-eval
, then you can do
(defun my-cos (arg)
(my-eval (list '.cos arg)))
repl
would be something like
(defun my-repl ()
(my-eval '((lambda (ev)
(ev ev))
(lambda (ev)
(print (eval (read)))
(ev ev)))))
I assume you have print
, eval
and read
defined in your evaluators null environment.
Upvotes: 1