Я пытаюсь научить себя некоторой LISP, и, хотя я понимаю большую часть этого, у меня проблемы с пониманием функции eval. Я знаю, что он делает это для нас уже и что это нехорошо использовать (так я и слышу), но как я могу сделать функцию, которая просто добавляет?Динамические функции LISP?
До сих пор я пытался/думать
(setf input-prompt "Enter addition epression: ")
(setf output-prompt "The value is: ")
(defun prompt-for-input (msg)
(format t msg))
(defun sum (expression)
(format t "Summing ~d and ~d.~%" x y)
(+ x y))
(defun add()
(prompt-for-input input-prompt)
(let ((expression (read)))
((sum (expression)))
(add)))
Не совсем уверен, куда идти на это, любая помощь приветствуется.
Что вы пытаетесь сделать? Похоже, вы хотите называть разные функции на основе выражения, которое вы читаете, без использования 'eval'. Это в основном написание небольшого интерпретатора, что и есть в большинстве книг Lisp (Little Schemer и т. Д.). Но это поможет, если вы сможете более четко описать свою проблему. –