Описание тега let-over-lambda

2 ответа

Макросы, которые пишут макросы - ошибка компиляции

Когда я компилирую следующий код, SBCL жалуется, что g! -Unit-value и g! -Unit не определены. Я не уверен, как отладить это. Насколько я могу судить, сгладить не удается. Когда сглаживание достигает нецитированной части расщеплений, кажется, что вся…
15 ноя '15 в 19:56
1 ответ

Общий лисп: как запускать лямбда-тесты

Я использую пример let-over-lambda Дуга Хойта и The Phoeron, чтобы одновременно укрепить мое понимание пакетов с общим списком, quicklisp и asdf и профессиональных практик для программирования на уровне общего масштабирования на уровне lisp. Я могу …
13 дек '15 в 02:19
1 ответ

Где "a1" связано в sortf из книги "Пусть над лямбдой"?

Книга Дуга Хойта "Let over Lambda" описывает функцию быстрой сортировки для входных данных фиксированного размера через сортировочные сети: (defmacro! sortf (comperator &rest places) (if places `(tagbody ,@(mapcar #`(let ((,g!a #1=,(nth (car a1)…
20 янв '18 в 20:36
2 ответа

Как можно скомпилировать символы в макросе Pandoric?

Я прочитал раздел 6.7 LOL несколько раз, и я все еще не могу сосредоточиться на следующем. Привязки, которые ранее были закрыты для внешнего кода, теперь широко открыты, чтобы мы могли с ними повозиться, даже если эти привязки были скомпилированы в …
2 ответа

Дай по лямбде в схему?

В Common Lisp, если я хочу, чтобы две функции имели общее состояние, я бы выполнил лямбду let следующим образом: (let ((state 1)) (defun inc-state () (incf state)) (defun print-state () (format t "~a~%" state)) Эти функции не являются локальными для…
21 авг '16 в 16:54
1 ответ

пусть более лямбда, похоже, не работает в elisp

В Common Lisp такие вещи прекрасно работают. (let ((x 7)) (defun g (y) (* y x))) (g 16) В elisp эта ошибка говорит, что x не определено, как если бы лексическое закрытие не произошло. Это то, чего я не встречал в других lisps. Что с этим происходит?
16 авг '22 в 06:49