Я искал в Интернете ответы, но не имел большой удачи, поэтому, пожалуйста, простите меня, если это повторный вопрос. Я сформулирую свои вопросы: = (?) Таким образом и в комментариях в коде, который следует также. (Я использую Emacs с CLISP и Slime): (?)Необходимые концепции и терминология
;; is this called nested function or partial application or what(?)
(defun create-function(a)
(defun add-function(x)(+ x a)))
->(create-function 8)
->ADD-FUNCTION
->(add-function 3)
->11
я могу увидеть преимущества сцепления этих «частичных приложений», но это не выделки сами по себе, да ладно, давайте проверить, если мой наблюдения являются правильными:
;; the 'let statement *binds* 'loc to the 'clos object with 10 being the argument
;; for the formal parameter x. when funcall is applied to 'loc with 20 for y, the
;; lambda expression substitutions are complete and 200 is returned(?).
(defun close(x)
(lambda(y)(* x y)))
->CLOSE
(let ((loc (close 10)))
(funcall loc 20))
->200
Приведенный выше код является закрытие из-за объема из «LOC в» пусть заявление (?): если «Клоса был изменчивый переменной было бы только изменить значение в то время как внутри «Пусть заявление (?) ... я думаю. Наконец, если кто-нибудь может сказать мне, как получить макрос step, чтобы играть хорошо с вышеупомянутыми функциями, это очень помогло бы (они сразу оценивают ...) Спасибо.
Извините за поздний отклик, отказ оборудования и больной питомец сделали меня очень занятой. Я был немного смущен ответами, которые я получил, поэтому я просто провел последний час, расшифровывая г-на Стил и г-на Сейбела на обязательных формах и закрытиях. Теперь я чувствую себя более уверенно в своем понимании и терминологии. Я напишу общий ответ позже. – macrolyte