Описание тега lisp-2

Lisp-2 относится к Lisp-подобным языкам с двумя разными пространствами имен для переменных и имен функций.
3 ответа

Эмулировать вызываемые объекты в стиле Clojure в Common Lisp

В Clojure реализованы хеш-карты и векторы invoke, так что они могут быть использованы в качестве функций, например, (let [dict {:species "Ursus horribilis" :ornery :true :diet "You"}] (dict :diet)) lein> "You" или, для векторов, (let [v [42 613 2…
17 янв '15 в 03:15
4 ответа

Использование лямбда-значения из функции в качестве первого элемента списка

Я читаю "Парадигмы программирования искусственного интеллекта" Питера Норвига и столкнулся с проблемой, которую не могу решить самостоятельно (это мое введение в Лисп). На самом деле проблема довольно маленькая, но, очевидно, не та, которую мой мале…
01 май '11 в 18:52
3 ответа

В чем разница между Лисп-1 и Лисп-2?

Я пытался понять разницу между Lisp-1 и Lisp-2 и как это связано с Clojure, но я все еще не понимаю должным образом. Кто-нибудь может просветить меня?
02 янв '11 в 13:30
6 ответов

Отдельные пространства имен для функций и переменных в Common Lisp и Scheme

Схема использует единое пространство имен для всех переменных, независимо от того, связаны ли они с функциями или другими типами значений. Common Lisp разделяет их так, что идентификатор "hello" может ссылаться на функцию в одном контексте и строку …
20 июн '09 в 04:51
1 ответ

Является ли "Лисп-1 против Лисп-2" актуальным в языке со статическими типами?

(Это вопрос типа теории CS; я надеюсь, что это приемлемо.) Дискуссия " Lisp-1 против Lisp-2" касается того, должно ли пространство имен функций отличаться от пространства имен всех других переменных, и это актуально в динамически типизированных язык…
30 окт '13 в 05:06
0 ответов

Почему не работает с лямбда в Common Lisp?

Я пишу интерпретатор LISP (в C), и я нахожусь на стадии реализации лямбда-функций и set языковые особенности. В моем переводчике следующие работы: (set 'f (lambda (x) (cdr x))) (f '(a b c)) Выведение (b c), Тем не менее, по-видимому, такие вещи не р…
05 ноя '17 в 21:59
3 ответа

Как сохранить функцию в переменной в Лиспе и использовать ее

Я хочу сохранить функцию как print в переменной, так что я могу просто напечатать что-то короткое, как pНапример:В Scheme: (define print display) (print "Hello world\n") ;; alternate way (define print 'display) ((eval print) "Hello world\n") Тот же …
2 ответа

В схеме или STk функция будет показана как процедура или замыкание, но почему LISP дает ошибку?

В Ubuntu, если я запустил MIT-Scheme, он покажет функцию как процедуру: 1 ]=> (define (sq x) (* x x)) ;Value: sq 1 ]=> (sq 3) ;Value: 9 1 ]=> sq ;Value 11: #[compound-procedure 11 sq] а Беркли STk покажет sq в качестве закрытия: STk> (de…
13 дек '15 в 19:11
4 ответа

Общий Лисп а Лисп-н?

Мне известно, что в Common Lisp существуют разные среды привязки для функций и переменных, но я считаю, что у него также есть другая среда привязки для меток tagbody. Существуют ли еще более обязательные условия, чем эта? Если так, то справедливо ли…
09 авг '12 в 04:27
2 ответа

Common Lisp, "определенный, но никогда не используемый"

Эта функция компилируется с предупреждениями, fn определен и никогда не используется в первой строке, а fn является неопределенной функцией во второй строке: (defun test-function (fn) (funcall #'fn)) Зачем? Общее объяснение или ссылка на него было б…
25 сен '16 в 20:33
2 ответа

Глупо ли делать александрию: карри не обязательно использует funcall?

В настоящее время функция карри с Александрией curry должен быть вызван с funcall, Однако можно установить новую функцию symbol-function так что мы можем обойтись без него и относиться к нему как к реальной функции. Иллюстрировано на https://lispcoo…
24 авг '17 в 13:01
1 ответ

Вызов списка функций в Common Lisp

В Clojure я могу определить последовательность функций, а затем вызвать их, как если бы они были любым другим значением, например: (doseq [op [+ - * /]] (println (op 1 2 3 4))) который производит следующий вывод: 10 -8 24 1/24 nil Попытка сделать то…
03 окт '14 в 16:26
4 ответа

Почему я должен вызывать функцию, возвращенную из другой?

Почему это не работает? ( ((lambda () (lambda (x) (funcall #'1+ x)))) 2) ; yields Compile-time error: illegal function call Я столкнулся с такой ситуацией, и позже оказалось, что funcall исправляет это, т.е. (funcall ((lambda () (lambda (x) (funcall…
02 май '16 в 09:02
1 ответ

Common Lisp Lisp-1 macro

Я пытаюсь эмулировать единое пространство имен схемы внутри общего lisp с помощью макроса (основанного на Дуге Хойте), который расширяется до лямбды, где каждое использование f! символ (похож на Дуга Хойта o! а также g! символы) в позиции функции ра…
14 янв '15 в 20:37
3 ответа

У каких-нибудь лиспов в голове есть s-выражение, например ((f 2) 3 4)? Если нет, то почему?

Поддерживают ли лиспы вложенные s-выражения на голове? Например ((f 2) 3 4) для которого (f 2) предположительно оценивает функцию / макрос для применения на 3 4, Возможно ли иметь шепот, поддерживающий такую ​​вещь? Или есть технические ограничения,…
16 окт '12 в 03:04
3 ответа

Может ли Emacs Lisp назначить лямбда-форму такой переменной, как Scheme?

Изучая ячейки символов Emacs Lisp, я обнаружил, что для примера функции вроде (defun a (&rest x) x) я могу позвонить (symbol-function 'a), который возвращает (lambda (&rest x) x). Я могу использовать его, если захочу > ((lambda (&rest…
13 фев '20 в 07:43
2 ответа

Почему mapcar в lisp берет имя, а не функцию?

Я просматриваю книгу lisp и смотрю на , мой вопрос в том, почему это действительно: > (mapcar #'+ '(1 2) '(3 4)) а вот этого нет: (mapcar + '(1 2) '(3 4)) другими словами, есть ли причина, по которой в шепелявости было решено, что первый аргумент…
03 янв '21 в 08:21