Публикации по теме 'lisp'


Понимание возможностей LISP
Пол Грэм описывает LISP как точку схождения всех языков программирования. По его наблюдению, по мере взросления языков средний язык продолжает сползать в сторону LISP. Поэтому понимание LISP означает понимание фундаментальной модели современного программирования. Другие рекламируют LISP как необходимый инструмент для того, чтобы стать лучшим программистом. Эрик Рэймонд зашел так далеко, что сказал, что понимание LISP — это «глубокий опыт просветления». В поисках этого понимания я..

Вопросы по теме 'lisp'

схема и набор!
Как я могу изменить значение переменной с помощью функции, которая использует лямбда-параметр? То есть: ;;definitions (define test "fails") (define (experiment input) (set! input "works")) ;;interactions > test "fails" > (experiment test)...
1957 просмотров
schedule 13.01.2024

Извлечение элемента из списка ассоциаций в lisp (elisp)
Я ищу способ «вытолкнуть» элемент из списка ассоциаций, другими словами, «деструктивный» ассоциативный элемент: (setq alist '((a . 1) (b . 2)) (assoc-pop 'a alist) ;; -> (a . 1) ;; alist -> ((b . 2)) Есть ли какая-нибудь функция в...
534 просмотров
schedule 28.10.2023

Разница между (loop for) и (loop :for) в Common Lisp
Я только что увидел ответ Сильвестра на этот вопрос , и мне показалось странным, что цикл имеет двоеточия везде. Обычно я писал (loop for n below 10 do (princ n) (terpri)) вместо (loop :for n :below 10 :do (princ n) (terpri))...
152 просмотров
schedule 21.12.2023

Почему макрос, в котором используется let, расширяется иначе, чем макрос, который этого не делает?
Я новичок в Lisp, читаю Let Over Lambda Дуга Хойта, и он представляет макрос Пола Грэма nif в главе 3. Я поигрался с этим и создал эти два макроса: (defmacro niffy (expr pos zero neg) `(cond ((plusp ,expr) ,pos) ((zerop ,expr) ,zero)...
108 просмотров
schedule 10.01.2024

Получить реверс списка внутри функции, которая возвращает список
Поэтому мне нужно получить элементы под нечетными индексами в обратном порядке. Я написал функцию, чтобы получить нечетные элементы индекса, но я не уверен, как заставить их возвращаться в обратном порядке. Я должен сделать это в одной функции,...
218 просмотров
schedule 28.12.2023

clojure рекурсия создает список
((fn foo [x] (when (> x 0) (conj (foo (dec x)) x))) 5) Для этого кода результатом будет [5 4 3 2 1]. Почему это не [1,2,3,4,5]? Я вижу, что мы делаем conf из результата рекурсивного вызова foo со значением. Ибо я думал, что должно быть 1 2...
163 просмотров

Racket - фильтровать четные и нечетные целые числа в два отдельных списка
Функция должна принимать список целых чисел и возвращать список, содержащий два подсписка: первый содержит четные числа из исходного списка, а второй содержит нечетные. Мой код выполняет свою работу, но если я проверю его с отрицательным целым...
736 просмотров
schedule 06.11.2023

LISP Напишите функцию cut-in-half, которая получает список и создает новый список, элементами которого являются первая половина и вторая половина.
У меня проблемы с этой функцией. сначала нас попросили: «Напишите лисп-функцию, которая принимает список и целое число n и возвращает первые n элементов списка в виде нового списка. Если n меньше 1, она возвращает NIL. за пределами длины функция...
838 просмотров
schedule 13.11.2023

Переопределение специального оператора с помощью MACROLET?
Я пытаюсь переопределить IF локально (цель - встроить DSL). Поведение меня действительно смущает. В СБКЛ: (macrolet ((if (x) x)) (if 'x)) ; => X (macrolet ((if (x) x)) (let ((x 2)) (if 'x))) ; => Execution of a form compiled...
59 просмотров
schedule 20.12.2023