Вопросы с тегами [common-lisp]

1

голосов
1

ответ
145

Просмотры

Сделать подсписок из списка с помощью LISP

У меня есть трудности при создании подсписка: '(((3) 2) 1)' из списка '(3 2 1)'. Я не знаю, с чего начать, любая помощь будет принята с благодарностью.
Dimamid
1

голосов
0

ответ
57

Просмотры

Макрос Loop: Скобки в использовании подпункта

Глава 22 Практической Common Lisp объясняет (среди прочего), как использовать как ключи и значения при переборе хэш-таблицы с помощью макроса контура: (петля для к быть хэш-ключей в час с помощью (хэш-значение v) ...) объяснение завершаются следующей сноской: не спрашивай меня, почему авторы LOOP в струсил по стилю не-круглых скобок для помощи подпункта. Это прекрасно для книги, и я не виню Питер Сейбел, не зная его. Тем не менее, я несколько любопытным о причинах этого проекта решения. Почему не синтаксис что-то вроде (цикл при к будучи хэш-ключей в час с помощью хэш-значение V ...) Является ли это проще разобрать? Или есть какая-то глубже причина?
1

голосов
0

ответ
62

Просмотры

Как найти размер чуждой структуры в SbCl?

Я пытаюсь получить размер чужой структуры в SBCL (чтобы сделать буфер данных надлежащего размера для чуждой функции). В C или Pascal SizeOf () выполняют ту же работу. Мой подход: (определение чуждых-типа MY-STRUCT (STRUCT MY-STRUCT (MY-FIELD (массив символов 30)))) (defmacro размера из (типа) (пусть ((х (Gensym))) `( пусть ((х, (делают чуждыми (массив, тип 2)))) (- (SB-SYS: сок-INT (чуждой-заболонный (deref (deref, х) 1))) (SB-SYS: СПД- Int (чуждые-сок (deref (deref, х) 0))))))) (размер-оф MY-STRUCT) ;; => 30 Есть правильный способ получить размер чуждой структуры в SBCL?
MrCat
1

голосов
0

ответ
39

Просмотры

Strange behavior of log4cl and iterate

I am starting to use log4cl and am facing a weird issue when using it inside an iterate loop. While working does show the name of the method it is empty for not-working. Do I miss something obvious here? Or is there a bug in the combination of iterate and log4cl? (ql:quickload "iterate") (ql:quickload "log4cl") (defpackage :minimal (:use #:cl #:iterate)) (in-package :minimal) (defclass test () ((a :documentation "test-a" :initform (make-array '(3 3) :element-type 'integer :initial-element 0) :initarg :a))) (defvar *a* (make-instance 'test)) (defmethod not-working ((test test)) (with-slots (a) test (iter (for i below 3) (iter (for j below 3) (unless (= 10 (aref a i j)) (log:info "R: ~D C: ~D" i j)))))) (defmethod working ((test test)) (with-slots (a) test (loop for i below 3 do (loop for j below 3 unless (= 10 (aref a i j)) do (log:info "I: ~D J: ~D" i j))))) (not-working *a*) (working *a*) EDIT I see the issue only on sbcl. Using cclthe method name is displayed correctly. Furthermore, omitting the (are...) statement inside unless leads to a working version: (defmethod also-working ((test test)) (with-slots (a) test (iter (for i below 3) (iter (for j below 3) (unless (= 10 j) (log:info "R: ~D C: ~D" i j))))))
Martin Buchmann
1

голосов
2

ответ
167

Просмотры

How can I perform a partial symbol match on a defstruct?

В этом StackOverflow вопрос, я создал базу данных сотрудников и при условии выбора-на-первой функции. Как я могу написать отборную-на-первым-шаблоном, в котором запись возвращается, если какая-либо часть строки / соответствует символу? (Выбрать-по-первого рисунка «эв); Возвращает все записи, содержащие «ЭВ» (., Например, Стив) Вот код, необходимый для построения базы данных: (ОБНОВЛЕНО: включено предлагаемое решение) (требуется «ХЛ) (DefVar * эй-дб * ноль) (Defun надстройки записи (АЯ) (толчок эй * эй-дб *)) (defstruct работник возраст первого имя последнего имя секс дети) (добавить-запись (сделать-сотрудник)) (добавить-запись (макияж работник: возраст 34: последнее название «Фаркухарсон : первое имя 'алиса: секс' вн)) (добавление записи (макияж работник: возраст 43: последнее название 'рабочие места: первое имя' стив: пол мужского пола)) (добавление запись (сделать-сотрудник: возраст 53: последний название 'Баллмер: первое имя' стив: пол мужской пол)) (Defun выбора-на-первых (первое имя) (удалить, если не-# '(лямбда (сотрудник) (равный (employee- первое имя сотрудник) первое имя)) * эй-дб *)) ;; ---------- Ответ ниже ---------- ;; (Defun выбрать-по-первый шаблон (первое имя) (удалить, если-не # '(лямбда (сотрудник) (если ((имя-символа строки матч первого имя (имя сотрудника-первых сотрудник))) т ноль)) * EMP-DB *)) (печать (выбрать-по-первый рисунок "AL")); Возвращает запись Алисы (печать (выбор-на-первым рисунком «ЭВ»)); Возвращает запись из два Стива (печати (выбор-на-первого рисунком «Й»)); Возвращает NIL (Лямбда (сотрудник) (равный (первый-имя сотрудника сотрудник) первое имя)) * эй-дб *)) ;; ---------- Ответ ниже ---------- ;; (Defun выбрать-по-первый шаблон (первое имя) (удалить, если-не # '(лямбда (сотрудник) (если ((имя-символа строки матч первого имя (имя сотрудника-первых сотрудник))) т ноль)) * EMP-DB *)) (печать (выбрать-по-первый рисунок "AL")); Возвращает запись Алисы (печать (выбор-на-первым рисунком «ЭВ»)); Возвращает запись из два Стива (печати (выбор-на-первого рисунком «Й»)); Возвращает NIL (Лямбда (сотрудник) (равный (первый-имя сотрудника сотрудник) первое имя)) * эй-дб *)) ;; ---------- Ответ ниже ---------- ;; (Defun выбрать-по-первый шаблон (первое имя) (удалить, если-не # '(лямбда (сотрудник) (если ((имя-символа строки матч первого имя (имя сотрудника-первых сотрудник))) т ноль)) * EMP-DB *)) (печать (выбрать-по-первый рисунок "AL")); Возвращает запись Алисы (печать (выбор-на-первым рисунком «ЭВ»)); Возвращает запись из два Стива (печати (выбор-на-первого рисунком «Й»)); Возвращает NIL (Лямбда (сотрудник) (если (матч строка первого имя (символ имя (имя сотрудника-первых сотрудник))) т ноля)) * эй-дб *)) (печать (выбор-на-первым рисунок " аль ")); Возвращает запись Алисы (печать (выбор-на-первым рисунком «ЭВ»)); Возвращает запись из два Стива (печати (выбор-на-первого рисунком «Й»)); Возвращает NIL (Лямбда (сотрудник) (если (матч строка первого имя (символ имя (имя сотрудника-первых сотрудник))) т ноля)) * эй-дб *)) (печать (выбор-на-первым рисунок " аль ")); Возвращает запись Алисы (печать (выбор-на-первым рисунком «ЭВ»)); Возвращает запись из два Стива (печати (выбор-на-первого рисунком «Й»)); Возвращает NIL
1

голосов
1

ответ
175

Просмотры

How to return control from a function in lisp

(defun returnFirstCharacter(p) (if (symbolp p) (char (symbol-name p) 0) nil) ) (defun returnRestCharacters (p) (let () (intern (subseq(string p) 1)) ) ) (defun val (x a) (cond ((null a) nil) ((equal (car(cdr a)) x) (cdr (cdar a))) (t (val x (cdr a))) ) ) (defun match (pattern data) (cond ((equal pattern data) t) ((match2 pattern data nil)) (t nil) ) ) (defun match2 (p d a) (cond ( (null p)(cond ((null a) t) (t a) ) ) ((numberp p) (cond ((equal p d) t) (t nil) ) ) ( (symbolp p) (cond ((alpha-char-p (returnFirstCharacter p)) (let ()(if (equal p d) (match2 nil nil a) nil))) ((equal (returnFirstCharacter p) #\=) (let () (if (and (returnRestCharacters p) (null (val (returnRestCharacters p) a))) (match2 nil nil (cons ( list = (returnRestCharacters p) d) a) ) (let () (if (and (returnRestCharacters p) (equal (val (returnRestCharacters p) a) (car d))) (match2 (cdr p) (cdr d) a) nil) ) ) ) ) ) ) ( (listp p) (cond ((equal (list-length p) (list-length d)) (let () ( if (equal p d) (match2 nil nil a) (let () (append (match2 (car p) (car d) a)(match2 (cdr p) (cdr d) a) ) ) ) ) ) ) ) ) ) I have match2 being called twice by itself.I want the recursive calls to happen. the moment a call of match2 returns either true or nil the program is terminated i want control to be passed back to the previous match2 which called it. As you can see I have called match2 twice. (listp p) this condiiton in match2 I need to do recursion.How to do this
gizgok
1

голосов
1

ответ
109

Просмотры

Почему для чтения последовательности не возвращается на конец потока консоли?

Я открываю последовательный порт с CLISP в Cygwin как поток ввода-вывода и обнаружил, что чтение символов, по-символ является слишком медленным. По какой-то причине, поток классифицируется как интерактивные, которые я считаю, что вызывает ее зависание с чтения меньше, чем размер моей последовательности. Я взаимодействующий с отладкой порта на специальной системе. Я намеревался потратить немного времени, чтобы сценарий некоторых взаимодействий, но в конечном итоге бритья яка. Я вижу несколько различных путей решения этого. Прочтите 1 символ в то время, которое позволяет считывать-полукокс-не-зависания. Это слишком медленно. Написать FFI к серийному библиотеке. Я не думаю, что я должен сделать это. Найти способ, чтобы определить оставшуюся длину потока. Хорошее решение. Рисунок, как сделать последовательный порт неинтерактивным, который может привести к последовательности чтения, чтобы вернуться на конце потока. Это кажется, что лучшим решением для меня. (С-открытым файлом (серийный "/ DEV / ttyS3": Направление: Io: внешний-формате: UNIX: если-существует: перезаписать) (для чтения последовательности * данные * последовательный))) Итак, за звание, почему читать-последовательность не возвращается на конец потока консоли? Кроме того, что это лучший способ добиться такого поведения? Я предпочитаю придерживаться основного CLISP. что это лучший способ добиться такого поведения? Я предпочитаю придерживаться основного CLISP. что это лучший способ добиться такого поведения? Я предпочитаю придерживаться основного CLISP.
Nick
1

голосов
1

ответ
85

Просмотры

Получить IP-адрес подключения клиента в CLISP

Поэтому у меня есть сервер, написанный в Common Lisp для запуска в интерпретаторе CLISP. Когда клиент подключается к вышеуказанному серверу, мне нужен способ, чтобы получить их IP-адрес. Есть функция, которая позволит мне это сделать? Google-фу приносит ограниченные результаты. Заранее спасибо.
Samuel Breese
1

голосов
1

ответ
268

Просмотры

Типизированная и аргумент в безопасности подразделение в общей шепелявости

Короче мне нужно Defun ts_div и позволить ему быть типизированным и «безопасная аргумент» версией регулярных / В принципе, я хочу, чтобы принять список с любым количеством цифр в нем (даже нет), и быть в состоянии называем это следующим образом: (ts_div (123 321 23)) или: (ts_div somelist) Желаемый результат: если есть более двух элементов в списке, первый будет разделен на второй, а остальное игнорируется. Если второе число равно 0, то она должна возвращать значение первого числа вместо этого. Если список пуст, он должен возвращать 0. Любые предложения о том, как достичь этого? Sidenote: Я сделал некоторые испытания, пытаясь сделать аддитивный вариант этого. В принципе, подытожить все, что цифры, переданные ему в контексте списка, но, как ожидается, он жалуется на первый элемент в списке не является функцией, и я
Jarmund
1

голосов
2

ответ
116

Просмотры

Как переместить руку над рукой по перезагружается

Можно ли перемещать руку над рукой по перезагружается, как это: (обработчик-связывание ((простая ошибка # «(лямбда (условие) (условие записи) (Invoke-перезагрузке» алле состояние)))) (перезапуск-дела (перезагрузка -случае (ошибка 'простой ошибки) (следующая (ERR))) (алле (ERR) (взывать-перезагрузка' рядом)))) это в настоящее время приводит к Нет перезагрузки сЛЕДУЮЩИЙ активен. [Состояние типа SB-INT: SIMPLE-CONTROL-ERROR] Я хочу, чтобы иметь возможность осуществлять общий перезапуск, как «просто лог-все-условия», которые затем называют правильный перезапуск для любого состояния сигнализируется в своем выражении.
Sim
1

голосов
1

ответ
507

Просмотры

не может начать ECL при использовании QuickLisp

$ ЭСЛ ;;; Loading "/home/***/quicklisp/setup.lisp" ;;; Загрузка #P "/usr/local/lib/ecl-12.7.1/cmp.fas" ;;; Загрузка #P «/usr/local/lib/ecl-12.7.1/asdf.fas» ASDF не мог загрузить гнезда, потому что произошла ошибка во время инициализации: Ошибка при попытке загрузить определение системных сокетов из имен файлов / USR / местные / Библиотека /ecl-12.7.1/sockets.asd: Нет применим метод ИСТ-FILE-TYPE с аргументами типов Составитель-FILE прекомпилированное-SYSTEM. $ Кошка ~ / .eclrc ;;; Следующие строки, добавленные QL: добавить к инициализации-файла: # -quicklisp (пусть ((quicklisp-Init (сливаться-файловые пути "quicklisp / setup.lisp" (пользователь-HomeDir-имя пути)))) (когда (зонд -file quicklisp-INIT) (нагрузка quicklisp-INIT))) Привет!
z_axis
1

голосов
1

ответ
1.6k

Просмотры

Common Lisp SublimeREPL

У меня SublimeText2 установлен в OSX с SublimeREPL и он работает как шарм для Руби и Python. Тем не менее, в последнее время я хотел, чтобы забрать Common Lisp и «CLISP РЕПЛ» дает мне следующую ошибку: OSError (2, «Нет такого файла или каталога») Я пытался Google любые инструкции по лучшей настройке ST2 с Common Lisp и не увенчались успехом. Я бы очень признателен за любые советы, ссылка или указания на получение SublimeText2 работать в паре с Common Lisp. Я установил следующие пакеты SublimeREPL Lispindent Должен ли я включить что-нибудь в моем файле конфигурации, чтобы получить CLISP РЕПЛ работает?
Alex
1

голосов
1

ответ
325

Просмотры

Невозможно загрузить libncurses с КФП

Я бегу SBCL установлен с склонный на Ubuntu 13.04 с quicklisp установленной CL-Ncurses, и я бегу в проблемы с загрузкой родной Ncurses через КФП. Первоначальная сессия выглядит следующим образом: Это SBCL 1.1.1.0.debian, реализация ANSI Common Lisp. Более подробная информация о SBCL доступна на. SBCL бесплатное программное обеспечение, при условии, как есть, с абсолютно никакой гарантии. Это в основном в открытом доступе; некоторые участки предоставляются на основании лицензий BSD-стиля. См КРЕДИТОВ и множительные файлы в дистрибутиве для получения дополнительной информации. \ * (ASDF: OOS «ASDF: нагрузка-оп: сл-Ncurses) ВНИМАНИЕ: Не удается загрузить Ncurses. Что справедливо, поскольку попытка запустить Ncurses код, связанный выходы: отладчик вызывается на SB-KERNEL :: Undefined-ALIEN-Функционально-ERROR в потоке #: Попытка вызвать неопределенный чужеродные функцию. Введите HELP для отладчика помощи, или (SB-EXT: ВЫХОД) для выхода из SBCL. перезапускается (доступен посредством числа или, возможно, по-сокращенное наименование): 0: [ПРЕРЫВАНИЕ] Выход отладчик, возвращаясь к верхнему уровню. (SB-KERNEL :: UNDEFINED-ALIEN-FUNCTION-ERROR) Если я пытаюсь загрузить его вручную (кража соответствующий код из package.lisp CL-ncurse в), я получаю следующий результат: \ * (ASDF: нагрузка-система " КФП) Т \ * (КФП: найти иностранные библиотека "libncurses" «( "/ USR / местные / lib64 /" "/ USR / местные / библиотека /" "/ lib64 /" "/ библиотека /"«/ USR / lib64 /» "/ USR / Lib /" "/ USR / lib32" "/ USR / Lib / x86_64-Linux-гну"): типы«( "так" "а")) NIL Где я добавил последние два пути поиска , установлен libncurses5-DEV и приложения, работающие на Ncurses работать нормально. Попытка найти файл .so на моей машине, я получаю:% найти libncurses. так /lib/i386-linux-gnu/libncurses.so.5 /lib/i386-linux-gnu/libncurses.so.5.9 /lib/x86_64-linux-gnu/libncurses.so.5 / Библиотека / x86_64-linux- гну / libncurses.so.5.9 /lib32/libncurses.so.5 /lib32/libncurses.so.5.9 /usr/lib/x86_64-linux-gnu/libncurses.so /usr/lib32/libncurses.so пути, которые достигают libncurses.so включены в пути поиска. Любые идеи о том, как получить КФП загрузить Ncurses?
Michael
1

голосов
2

ответ
966

Просмотры

вызывая Freeling Java API от ABCL

Я пытаюсь вызвать API Freeling (http://nlp.lsi.upc.edu/freeling/) Java (http://devel.cpl.upc.edu/freeling/svn/trunk/APIs/java/) из ABCL (http://common-lisp.net/project/armedbear/). Я последовал за всю процедуру в README в Freeling Java API к, используя глотнул, компилировать API. После этого я смог запустить пример кода. Java -Djava.library.path =. -cp freeling.jar :. Анализатор <teste.text> teste.out В этом Analyzer.java, соответствующие линии:. ... импорт edu.upc.freeling *; ... System.loadLibrary ( "freeling_javaAPI"); ... MacoOptions оп = новые MacoOptions (LANG); В ABCL я попробовал: (добавить к классам "/Users/arademaker/Downloads/myfreeling/APIs/java/freeling.jar") (jstatic "нагрузки" "java.lang.System" «/ Users / arademaker / Загрузки /myfreeling/APIs/java/libfreeling_javaAPI.so» ) (jnew "edu.upc.freeling.MacoOptions" "ан") Но я получил ошибку: Java исключение 'java.lang.UnsatisfiedLinkError: edu.upc.freeling.freelingJNI.new_MacoOptions (Ljava / языки / String;) J' , [Состояние типа JAVA-ИСКЛЮЧЕНИЕ] Кто-нибудь есть какие-либо идеи? Любая специальная проблема ABCL с System.load Ява?
1

голосов
1

ответ
149

Просмотры

Как использовать находку рекурсивно CXML-СТП и найти рекурсивно-если

Я не мог найти примеры и не могу понять документацию для этих функций: найти рекурсивно найти рекурсивно-если, я хочу, чтобы найти первый на первой странице переполнения стека. Я могу получить HTML-дереву таким образом: (DEFUN получить-страницы (URL) "Get STP (DOM альтернативного) представление страницы" (CHTML: разбор (drakma: HTTP-запрос URL) (CXML-СТП: макияж строитель)) ) (Get-страницы «http://stackoverflow.com») Отсюда, хотя, я просто не знаю, что найти рекурсивно и найти рекурсивно-если должен выглядеть реальными аргументами. Edit: Решение о поиске первого на первой странице SO, используя поиск рекурсивно-если: (CXML-СТП: найти рекурсивно-если (лямбда (узел) (и (typep узел «CXML-СТП: элемент) (равный (СТП : локальное имя узла) «ДИВ») (равный (СТП: узел «класс» атрибут-значение) "
deadghost
1

голосов
1

ответ
86

Просмотры

Я не знаю, что эта функция должна делать

У меня здесь функция, что мне нужно изменить так, что я хотел бы избежать двойного рекурсивного вызова (F (автомобиль л)). Прежде всего, я не могу понять, что он показывает .. Если я прохожу (F «((3 4) 5 6)) он показывает мне CAR: 3 это не список Может кто-нибудь помочь мне понять, а затем изменить его? (DEFUN F (L) (COND ((NULL, L), 0) ((> (е (автомобиль л)) 2) (+ (автомобиль л) (е (корд л)))) (Т (е (АВТОМОБИЛЯ л) ))))
user3043278
1

голосов
1

ответ
124

Просмотры

многопроцессорных с шепелявость, пусть *

Я пытаюсь создать процесс, который использует подведенный *. Когда я пытаюсь запустить его, дочерний процесс находится в [сброс] состояние. Если я использую обходной путь и использовать пусть нить начинается как [активное] все работает отлично. Я озадачен это поведение и хотел бы объяснить. (Defparameter * г * 1) (defparameter * Рез-лист * ноль) (DEFUN тестер () (пусть ((Рез * г *)) (нажимные Рез * Рез-лист *))) CL-USER> (CCl: процесс -run-функция "тест" «тестер) # CL-USER> * Рез-лист * (1) Все работает до сих пор. Но если я изменю Выпускаемый, чтобы *, я получаю [сброс] состояние, но код внутри дочернего потока выполняется. (DEFUN тестер () (пусть * ((Рез * г *)) (нажимные Рез * Рез-лист *))) CL-USER> (CCl: процесс-запуск-функция "Тест" «тестер) # CL-USER> * Рез-лист * (1 1) Я бы также благодарен, если кто-то может мне точку на ресурс, который бы объяснить различные состояния. Благодарю.
saq7
1

голосов
1

ответ
101

Просмотры

ALET macro and use of indirection

В главе 6 «Пусть Over Lambda» Я нашел анафорный макрос под названием AlEt. Он работает как пусть, но особенно полезно, когда последняя форма АЛЕТ тела лямбда-выражение, так как он позволяет использовать лямбда-выражения, прежде чем он на самом деле происходит в тексте. Это первая версия макро, АЛЕТ%: (defmacro AlEt% (letargs и тело остальное) `(пусть ((это), @ letargs) (SETQ это, @ (последнее тело)), @ (butlast тела) это) ) Все идет нормально. Но следующий автор решает усилить макрос следующего рассуждения: АЛЕТ% может быть сделано, чтобы не возвращать последнюю форму в своем теле-который, как мы ожидаем, чтобы быть лямбда-формы, но вместо того, чтобы функция, которая ищет другую функцию внутри Выпускаемое лексический охват формы, а затем вызывает эту функцию вместо этого. Это иногда называют окольным, потому что вместо того, чтобы возвращать функцию, чтобы сделать что-то, мы возвращаем функция, которая ищет функцию с помощью указателя разыменования, а затем использует эту функцию вместо этого. Косвенность это понятие повсеместно на протяжении языков программирования по уважительной причине. Это позволяет нам изменить положение вещей во время выполнения, что без косвенности, фиксируются во время компиляции. AlEt определяется как: (defmacro AlEt (letargs и тела остальных) `(пусть ((это), @ letargs) (SETQ это, @ (последняя тела)), @ (butlast тела) (лямбда (и Params отдых) (применить это Params )))) В чем разница? Что это может сделать окончательный вариант, что AlEt% не может? AlEt возвращает лямбда, который будет вызывать другую лямбда. Что хорошо для? Если кто-то может привести пример использования косвенного, будет понятно. мы возвращаем функцию, которая смотрит на функцию с помощью указателя разыменования, а затем использует эту функцию вместо этого. Косвенность это понятие повсеместно на протяжении языков программирования по уважительной причине. Это позволяет нам изменить положение вещей во время выполнения, что без косвенности, фиксируются во время компиляции. AlEt определяется как: (defmacro AlEt (letargs и тела остальных) `(пусть ((это), @ letargs) (SETQ это, @ (последняя тела)), @ (butlast тела) (лямбда (и Params отдых) (применить это Params )))) В чем разница? Что это может сделать окончательный вариант, что AlEt% не может? AlEt возвращает лямбда, который будет вызывать другую лямбда. Что хорошо для? Если кто-то может привести пример использования косвенного, будет понятно. мы возвращаем функцию, которая смотрит на функцию с помощью указателя разыменования, а затем использует эту функцию вместо этого. Косвенность это понятие повсеместно на протяжении языков программирования по уважительной причине. Это позволяет нам изменить положение вещей во время выполнения, что без косвенности, фиксируются во время компиляции. AlEt определяется как: (defmacro AlEt (letargs и тела остальных) `(пусть ((это), @ letargs) (SETQ это, @ (последняя тела)), @ (butlast тела) (лямбда (и Params отдых) (применить это Params )))) В чем разница? Что это может сделать окончательный вариант, что AlEt% не может? AlEt возвращает лямбда, который будет вызывать другую лямбда. Что хорошо для? Если кто-то может привести пример использования косвенного, будет понятно. Косвенность это понятие повсеместно на протяжении языков программирования по уважительной причине. Это позволяет нам изменить положение вещей во время выполнения, что без косвенности, фиксируются во время компиляции. AlEt определяется как: (defmacro AlEt (letargs и тела остальных) `(пусть ((это), @ letargs) (SETQ это, @ (последняя тела)), @ (butlast тела) (лямбда (и Params отдых) (применить это Params )))) В чем разница? Что это может сделать окончательный вариант, что AlEt% не может? AlEt возвращает лямбда, который будет вызывать другую лямбда. Что хорошо для? Если кто-то может привести пример использования косвенного, будет понятно. Косвенность это понятие повсеместно на протяжении языков программирования по уважительной причине. Это позволяет нам изменить положение вещей во время выполнения, что без косвенности, фиксируются во время компиляции. AlEt определяется как: (defmacro AlEt (letargs и тела остальных) `(пусть ((это), @ letargs) (SETQ это, @ (последняя тела)), @ (butlast тела) (лямбда (и Params отдых) (применить это Params )))) В чем разница? Что это может сделать окончательный вариант, что AlEt% не может? AlEt возвращает лямбда, который будет вызывать другую лямбда. Что хорошо для? Если кто-то может привести пример использования косвенного, будет понятно. @ (Butlast тела) (лямбда (& Params отдыха) (применить это Params)))) Какая разница? Что это может сделать окончательный вариант, что AlEt% не может? AlEt возвращает лямбда, который будет вызывать другую лямбда. Что хорошо для? Если кто-то может привести пример использования косвенного, будет понятно. @ (Butlast тела) (лямбда (& Params отдыха) (применить это Params)))) Какая разница? Что это может сделать окончательный вариант, что AlEt% не может? AlEt возвращает лямбда, который будет вызывать другую лямбда. Что хорошо для? Если кто-то может привести пример использования косвенного, будет понятно.
Mark
1

голосов
1

ответ
58

Просмотры

Почему моя грамматика быть мутировал?

(Лямбда (х) (пусть ((точка (положение SYM (Изготовление-сентенциальная х)))) (если (не (нулевая точка)) (SETQ точка (1- точка)) (когда (и (> = точка 0) (символ = # \ @ (п-я точка (Серийно сентенциальная х)))) (пусть ((копия (копия-продакшн х))) (rotatef (п-я точка (Серийно сентенциальная копия)) (п-й (1+ точка) (производственно-сентенциальная копия))) (формат т "~ A ~% ~%" копия) (результат нажим копия)))))) (государства-производства ул)) (марка-состояние: имя (список «I (INCF * COUNT *)): производство результат))), который принимает состояние и символ грамматики. Исходное состояние выглядит следующим образом: #S (STATE: NAME (I 0): ПРОИЗВОДСТВА (#S (производство: Nont ' дерево-равно)) (SETQ J (добавить J (список prod2))))) (Get-производства (1+ (позиция # \ @ (Серийно сентенциальная jprod))) (Серийно сентенциальная jprod) грамматика))) J ) до (= (длина к) len0)) (список (марка-State: имя (список «I (INCF * COUNT *)): производство J)))) mgoto на альфа будет поменять @ с альфа для каждого производства в состоянии тогда и только тогда @ это непосредственно перед альфа. Когда я выполняю эту операцию на государственной структуре производства в оригинальной грамматикой также изменения, чтобы отразить изменения, которые я сделал их в mgoto. Я попытался скопировать мои структуры как можно больше для того, чтобы оставить оригинальную грамматику нетронутым, но, несмотря на это, моя грамматика всегда модифицируется, когда я вычислить Гото. Примечание: В закрытии, ГР аргумент передается в результате вызова (копирования грамматики) Reference: Я вычисления LR (0) набор элементов для снизу вверх парсер: http://www.ittc.ku.edu/~kulkarni/ обучения / EECS665 / задания / LR0Items / output.txt есть ли у вас какие-либо предложения для того, что я делаю неправильно? EDIT: Вызов rotatef в mgoto я подозреваю, это проблема. Тестовый пример: (rotatef (п-0 (Производство-сентенциальные (первый (State-Productions любого состояния))) (п-1 (Изготовление-сентенциальные (первый (State-Productions любого состояния)))) Когда я напечатал оригинальную грамматику и модифицированное состояние, обе структуры были изменены. есть ли способ сделать rotatef только изменить государственную структуру? Edu / ~ Кулкарни / обучение / EECS665 / задания / LR0Items / output.txt Есть ли у вас какие-либо предложения для того, что я делаю неправильно? EDIT: Вызов rotatef в mgoto я подозреваю, это проблема. Тестовый пример: (rotatef (п-0 (Производство-сентенциальные (первый (State-Productions любого состояния))) (п-1 (Изготовление-сентенциальные (первый (State-Productions любого состояния)))) Когда я напечатал оригинальную грамматику и модифицированное состояние, обе структуры были изменены. есть ли способ сделать rotatef только изменить государственную структуру? Edu / ~ Кулкарни / обучение / EECS665 / задания / LR0Items / output.txt Есть ли у вас какие-либо предложения для того, что я делаю неправильно? EDIT: Вызов rotatef в mgoto я подозреваю, это проблема. Тестовый пример: (rotatef (п-0 (Производство-сентенциальные (первый (State-Productions любого состояния))) (п-1 (Изготовление-сентенциальные (первый (State-Productions любого состояния)))) Когда я напечатал оригинальную грамматику и модифицированное состояние, обе структуры были изменены. есть ли способ сделать rotatef только изменить государственную структуру?
myselfesteem
1

голосов
1

ответ
98

Просмотры

Lisp recursion confusion

Я считаю, что это реализация не зависит, но я использую CLISP на Debian. Ниже я определил две функции с именем SUM. Они найти сумму двух неотрицательных целых чисел путем добавления 1 к N2 и вычитанием 1 из N1 до N1 не равно 0. Подход № 1 имеет смысл для меня, но подход # 2 является источником путаницы. ;;; подход # 1 (я понимаю, почему он работает)> (DEFUN сумма (n1 n2) "Возвращает сумму двух целых неотрицательных чисел." (Если (zerop n1) n2 (сумма (1 n1) (1+ n2) ))); 1+ добавляет 1 к его оператор> (сумма 5 10) 1. Трассировка: (SUM '5 '10) 2. Трассировка: (SUM' 4 '11) 3. Трассировка: (сУММА «3 '12) 4. Трассировка: (SUM '2 '13) 5. Трассировка: (SUM' 1 '14) 6. Трассировка: (SUM «0 '15) 6. Трассировка: СУММ ==> 15 5. Трассировка: СУММ ==> 15 4. Трассировка: SUM ==> 15 3. Трассировка: SUM ==> 15 2. Трассировка: SUM ==> 15 1. Трассировка: SUM ==> 15 15 ;;; Результат Этот же результат можно найти, используя этот другой подход, который я не понимаю, но, как представляется, более общим:> (DEFUN сумма (n1 n2) «Возвращает сумму двух неотрицательных чисел.» (Если (zerop n1) n2 (1+ (sum2 (1- п1) п2))))> (сумма 5 10) 1. Трассировка: (SUM «5 '10) 2. Трассировка: (SUM '4 '10) 3. Трассировка: (сУММА' 3 '10) 4. Трассировка: (SUM '2 '10) 5. Трассировка: (SUM' 1 '10) 6. Трассировка: (SUM «0 '10) 6. Трассировка: СУММ ==> 10 5. трассировки: SUM ==> 11 4. Трассировка: SUM ==> 12 3. Трассировка: SUM ==> 13 2. Трассировка: SUM ==> 14 1. Трассировка: SUM ==> 15 15 Это можно ясно видеть, что они делают что-то очень разные, и получить тот же результат. Как сюсюкать позволяет за поведение во втором подходе, и какова функция +1 действует на во втором подходе путем добавления 1 к функции, как функция не является переменной? Я получил эти две функции из главы 15 «COMMON LISP: интерактивный подход»
1

голосов
2

ответ
393

Просмотры

Lisp рекурсивной функции, список возврата

знаю, что это новичок вопрос, который я заранее извиняюсь. Я пишу рекурсивную функцию, которая возвращает число 'O в данном списке (DEFUN Гард-о (Liste) (конд ((не Liste) 0) ((равный (автомобиль Liste)' о) (+ 1 (авангардистов -о (корд Liste)))) ((Гард-о (корд Liste))))) Вместо возвращения количество встречаемости я хотел бы вернуть данный список с только «о. Как, что: (Гард-о «(AOX и посвататься)) должен возвращать => (ооо) Я не хочу, чтобы использовать поп, толчок, набор ... просто я не могу найти, чтобы вернуться из этого.
François Richard
1

голосов
1

ответ
82

Просмотры

LISP - Проверка вложенного списка

Пожалуйста, дайте мне знать, если я не ясно на любом этапе. Я извиняюсь за не предоставление кода, но, учитывая мое отсутствие знаний, а также отсутствие материала в Интернете. Я не могу представить любого. Я пишу функцию, которая будет принимать вложенный список, который основан на древовидную структуру. Где р обозначает родителей, а е и е являются дети. Исходя из моего собственного знания. Я считаю, что это дерево будет представлены на входе: ((Fe (feef) е) (efee) е (еее (EFEF))) То, что я хочу сделать, это проверить список, уровень за уровнем, и представляют каждый й или е по 4-е х или е-х, составляющих его. ((Fe (feef) е) (efee) е (еее (EFEF))) ((Fe (feef) е) (efee) (ээээ) (еее (EFEF))) Это в конечном итоге приведет к всей структуре представляется как это: ((FFFF) (ээээ) (feef) (ээээ) (ээээ) (FFFF) (ээээ) (ээээ) (ээээ) (ээээ) (ээээ) (ээээ) (ээээ) (ээээ) (ээээ) (EFEF)) Я затем использовать придавить, чтобы обеспечить список всех символов. Это будет конечный результат. Я понимаю, что это не хорошо этикета вопросов без примеров кода. Но проблема, которую я получил достаточно трудно, что даже разработка метода оказалось невероятно трудно. Если кто-то может предоставить любую помощь, будь то код или намеки на то, как решить эту проблему самостоятельно. Я был бы невероятно благодарен.
JT93
1

голосов
1

ответ
76

Просмотры

Как запустить веб-приложение с использованием SBCL + restas + апача?

В последнее время я получаю работу, чтобы написать веб-приложение с другими. Они решили использовать Apache, так что я должен использовать его. Но я писал свою программу в SbCl с помощью restas. Так что я запутался, как запустить мое приложение за Apache. Я попытался mod_lisp, но мне кажется неполезным. Все, что я получаю страницу изречение: Внутренняя ошибка сервера. Когда я проверил журнал ошибок Apache, я считаю: [Ядро: ошибка] [PID 18294: TID 140614142228224] [клиент 127.0.0.1:44049] AH00135: Неверный метод запроса сервера протокола [: ошибка] [PID 18295: TID 140614150620928 ] (70014) Конец найденного файла: ошибка чтения из Lisp Теперь я запутаться более ....
zqy787
1

голосов
1

ответ
86

Просмотры

Управление package.lisp / defpackage в Emacs

Мой текущий проект становится больше и начинает охватывать несколько пакетов. Экспорт и импорт управления депиляции обременительным. Мой список буфер заполняется с: package.lisp, package.lisp, package.lisp и т.д. Это очень трудно различить при переключении буферов с Cx б. Каждый раз, когда я добавить функцию в пакет и хочу экспортировать, усугубление выслеживая правильный файл почти заставляет меня HN. Я рассматривал возможность использования CL-ANNOT в @export вещи, но он чувствует, как идти к темной стороне. Есть хороший способ управлять defpackages в Emacs? Возможно, путь для перехода от текущего исходного файла к соответствующему defpackage?
BnMcGn
1

голосов
3

ответ
104

Просмотры

В Allegro CL и ABCL, я могу построить на структуру заданного только его имя типа?

В большинстве реализаций, вы можете использовать (свежий экземпляр «структура типа) для создания на структуру независимо от того, определен ли вы функцию конструктора для данного типа. Это не работает на Allegro или ABCL, но эти реализации все еще можно создать на чтение структур времени с #S (структура типа), что заставляет меня думать, что должно быть какой-то другой способ, чтобы построить их во время выполнения дано имя типа, символ.
Kyle
1

голосов
1

ответ
105

Просмотры

Как использовать FFI: DEF-радиопрограмма в CLISP

Я понял, как использовать общие объекты, созданные из кода C в CLISP с помощью FFI: DEF-призыве, но я не могу понять, как использовать FFI: Def-телепрограмма. Я не знаю, процесс и на самом деле я запутался, если CLISP также создаст некоторый файл .so, что некоторая функция C может использовать или что-то еще. Может кто-то пожалуйста, объясните, минимальный рабочий пример для написания таких функций обратного вызова?
Rorschach
1

голосов
1

ответ
114

Просмотры

Как перечислить все бинарные деревья заказанные каталонского соотношением

Я ищу алгоритм в Lisp или в псевдокоде к списку всех бинарных деревьев, заказанные каталонского отношения. Например, я хочу с входом «(ABCD) получить этот результат: (а (Ь (кд))) (а ((Ьс) d)) ((аб) (кд)) ((а (Ьс)) d) (((аЬ) с) d) заранее спасибо за любую помощь.
yannics
1

голосов
2

ответ
118

Просмотры

Gettin ZeroMQ работы с LISP в ОС Windows

Кто-нибудь получил ZeroMQ работать с LISP в Windows? Я использую LispBox 0,7 Я установил ZeroMQ. (QL: QuickLoad "ZeroMQ") Невозможно загрузить внешнюю библиотеку (ZeroMQ). Ошибка при открытии разделяемой библиотеки libzmq.dll: Указанный модуль не может быть найден. [Состояние типа CFFI: НАГРУЗКИ ВНЕШНЕЙ БИБЛИОТЕКА-ERROR] Добавить libzmq-v120-мт-Г.Д.-4_0_4.dll DLL в папку lispbox, редактировать это имя libzmq.dll andcall (QL: QuickLoad "ZeroMQ") снова , Невозможно загрузить внешнюю библиотеку (ZeroMQ). Ошибка при открытии разделяемой библиотеки libzmq.dll:% 1 не является приложением Win32. [Состояние типа CFFI: НАГРУЗКИ ВНЕШНЕЙ БИБЛИОТЕКА-ERROR] Любая идея, как получить это и работает?
nakiya
1

голосов
1

ответ
49

Просмотры

Нечетный (чтение) выпуск в Common Lisp (SBCL) [дублированный]

Этот вопрос уже есть ответ здесь: Слизь печатает мой (формат ...) вызывает только при вызове функции завершается 2 ответов у меня есть следующий код: (DEFUN Areacircle () (Princ «Введите радиус:») (радиус defparameter (читать)) ( defparameter область (* 3,1416 радиус радиус)) (Princ «площадь:») (область записи)) (AreaCircle) проблема заключается в том, что слизь запускает его без проблем, но когда я скомпилировать его с (при компиляции файла „area.lisp“ : выходной-файл «область») он оценивает часть (читать) первый; он попросит передать значение Radius перед печатью ничего.
Kolt Penny
1

голосов
1

ответ
84

Просмотры

Получение ошибки при загрузке LISP макросъемки: Ошибка: Класс имени ЛИЦО не найдено. При выполнении: FIND-класса, в процессе Listener (4)

Я получаю эту ошибку: Ошибка: Класс имени ЛИЦО не найдено. При выполнении: FIND-класса, в процессе Listener (4). Введите Cmd- / продолжить, Cmd-. прервать, Cmd- \ для списка доступных перезагружается. Если по-прежнему: Попробуйте найти класс снова Тип:? для других вариантов. Когда я загрузить / скомпилировать файл с макросом в нем: (defmacro DEF-пост-объект (объект) (пусть ((ВДП-имя репозитория * (ХЛ-ддд :: хранилищу вар сущности)) (базовый URL ( строка-downcase (конкатенация 'строка "/ апи /" (строка объект)))) (progn-оператор' (progn))) (петля для слота в (CCl: класс-слотов (найти-класс сущностей)) Append `( SETF ((CCl: слот-определение-имя слот) новый субъект) (корд (ассоциативный (строка (CCl: чёткости имя слота слот)) Титулы: строка испытателей # '=))) в progn-заявление) `(SETF (ningle: маршрут сл :: * Приложение *, базовый URL: метод: пост) (лямбда (PARAMS) (пусть ((новый-объект (свежий экземпляр, объект))) (, progn-оператор)))))) Как я понимаю LISP макросов ( Я новичок), нет никаких оснований для FIND-класса ожидать объект быть имя_классом, это параметр макроса. Сообщение об ошибке указывает на то, что находка класса выполняется, но это не так. Я просто загрузив файл, содержащий этот макрос через (QL: QuickLoad «имя файла») или скомпилировать его непосредственно. Любая помощь будет оценена, помогая мне понять, что происходит, и исправить ее. нет причин для FIND-класса ожидать объект быть имя_классом, это не будет параметр макроса. Сообщение об ошибке указывает на то, что находка класса выполняется, но это не так. Я просто загрузив файл, содержащий этот макрос через (QL: QuickLoad «имя файла») или скомпилировать его непосредственно. Любая помощь будет оценена, помогая мне понять, что происходит, и исправить ее. нет причин для FIND-класса ожидать объект быть имя_классом, это не будет параметр макроса. Сообщение об ошибке указывает на то, что находка класса выполняется, но это не так. Я просто загрузив файл, содержащий этот макрос через (QL: QuickLoad «имя файла») или скомпилировать его непосредственно. Любая помощь будет оценена, помогая мне понять, что происходит, и исправить ее.
Jim Barrows
1

голосов
3

ответ
385

Просмотры

Emacs SLIME - Common Lisp - оценка региона и печать всех результатов

У меня установлен Emacs + SLIME + SBCL, и я новичок в этом материале. Итак, мой вопрос заключается в том, чтобы оценить весь файл или только выделенную область файла и распечатать результат каждого выражения на консоль. Например, для кода (+ 3 5) (Defun мой первый (а) (автомобиль а)) (мой первый (список 5 7 3)) я хочу видеть в консоли следующее: 8 MY_FIRST 5 Спасибо за вашу помощь ,
Ilya Muradyan
1

голосов
1

ответ
774

Просмотры

Создание Emacs / Слизь / Quicklisp / SBCL работы в ОС Windows

Я использую вышеуказанную комбинацию в Windows 7.0 в течение нескольких месяцев. К сожалению, коллега посоветовал мне установить слизь helper.el в Emacs, в результате: Emacs Slime не распознает QL больше. Я использую SBCL 1.2.11 для Windows, и из командной строки, это SbCl знает установку QL. Это мой .sbclrc ;;; Следующие строки, добавленные QL: добавить к инициализации-файлу: # -quicklisp (пусть ((quicklisp-инициализация (слияние-путевые имена "Документы / LISP / .asdf-установка-Dir / систем / setup.lisp" (USER- HomeDir-путь)))) (если (зонд-файл quicklisp-INIT) (нагрузка quicklisp-INIT))), то я напечатал (QL: QuickLoad "quicklisp-шламовые помощники"), и он составил много. Наконец он сказал, чтобы использовать, добавьте в файл ~ / .emacs: (нагрузки (расширение-файла-имя «~ / Документы / LISP /. с путем к своей реализации (SETQ нижне-лепет-программа «SbCl») Теперь это соответствующая часть в моем файле .emacs (загрузка «с: /Users/xyz/Documents/LISP/.asdf-install-dir/systems /slime-helper.el ") (SETQ нижне-лепет-программа "C: \\ Progra ~ 1 \\ Steelb ~ 1 \\ 12BDCB ~ 1,11 \\ sbcl.exe") Я начал Emacs и придумал просто нормально , Mx слизь все еще хорошо:; SLIME 2015-06-01 CL-USER> Но тогда: (QL: QuickLoad: мой-проект) вернулся пакет QL не существует. Но хуже всего, если удалить слизь-помощник из .emacs-файл, он снова распознает пакет quicklisp, но каждый вызов QL запирает Emacs. Я могу подождать несколько минут, не получая никакого ответа. Любая помощь приветствуется. с путем к своей реализации (SETQ нижне-лепет-программа «SbCl») Теперь это соответствующая часть в моем файле .emacs (загрузка «с: /Users/xyz/Documents/LISP/.asdf-install-dir/systems /slime-helper.el ") (SETQ нижне-лепет-программа "C: \\ Progra ~ 1 \\ Steelb ~ 1 \\ 12BDCB ~ 1,11 \\ sbcl.exe") Я начал Emacs и придумал просто нормально , Mx слизь все еще хорошо:; SLIME 2015-06-01 CL-USER> Но тогда: (QL: QuickLoad: мой-проект) вернулся пакет QL не существует. Но хуже всего, если удалить слизь-помощник из .emacs-файл, он снова распознает пакет quicklisp, но каждый вызов QL запирает Emacs. Я могу подождать несколько минут, не получая никакого ответа. Любая помощь приветствуется. Emacs файл (загрузка "с: /Users/xyz/Documents/LISP/.asdf-install-dir/systems/slime-helper.el") (SETQ нижне-лепет-программа «C: \\ Progra ~ 1 \\ Steelb ~ 1 \\ 12BDCB ~ 1,11 \\ sbcl.exe ") Я начал Emacs и придумал просто нормально. Mx слизь все еще хорошо:; SLIME 2015-06-01 CL-USER> Но тогда: (QL: QuickLoad: мой-проект) вернулся пакет QL не существует. Но хуже всего, если удалить слизь-помощник из .emacs-файл, он снова распознает пакет quicklisp, но каждый вызов QL запирает Emacs. Я могу подождать несколько минут, не получая никакого ответа. Любая помощь приветствуется. Emacs файл (загрузка "с: /Users/xyz/Documents/LISP/.asdf-install-dir/systems/slime-helper.el") (SETQ нижне-лепет-программа «C: \\ Progra ~ 1 \\ Steelb ~ 1 \\ 12BDCB ~ 1,11 \\ sbcl.exe ") Я начал Emacs и придумал просто нормально. Mx слизь все еще хорошо:; SLIME 2015-06-01 CL-USER> Но тогда: (QL: QuickLoad: мой-проект) вернулся пакет QL не существует. Но хуже всего, если удалить слизь-помощник из .emacs-файл, он снова распознает пакет quicklisp, но каждый вызов QL запирает Emacs. Я могу подождать несколько минут, не получая никакого ответа. Любая помощь приветствуется. SLIME 2015-06-01 CL-USER> Но тогда: (QL: QuickLoad: мой-проект) вернулся пакет QL не существует. Но хуже всего, если удалить слизь-помощник из .emacs-файл, он снова распознает пакет quicklisp, но каждый вызов QL запирает Emacs. Я могу подождать несколько минут, не получая никакого ответа. Любая помощь приветствуется. SLIME 2015-06-01 CL-USER> Но тогда: (QL: QuickLoad: мой-проект) вернулся пакет QL не существует. Но хуже всего, если удалить слизь-помощник из .emacs-файл, он снова признает пакет quicklisp, но каждый вызов QL запирает Emacs. Я могу подождать несколько минут, не получая никакого ответа. Любая помощь приветствуется.
Hennes
1

голосов
1

ответ
102

Просмотры

Как установить charpos из потока терминала в SBCL

Я пытаюсь убедить SBCL, что charpos терминала возвращается к 0 после чтения строки. Например, следующий фрагмент коды (progn (формат * запрос-IO * "ввод:") (сила-вывод * запрос--й *) (PROG1 (чтение строка * запрос--й *) (записи (SB-осущий :: charpos * запрос-ю *)))) напечатает 7 (или 14, 21, ... в зависимости от того, сколько раз вы запустите его), несмотря на то, что после чтения строки charpos должна быть обратно на 0. Спасибо
Frédéric Dumont
1

голосов
1

ответ
663

Просмотры

Ошибка компиляции Common Lisp

PERFORM возвращенного NIL 2: (ASDF / Действие: PERFORM # #) 2: ASDF / ДЕЙСТВИЯ: PERFORM возвращенного Т 2: (ASDF / Действия: PERFORM # #) 2: ASDF / ДЕЙСТВИЯ: PERFORM возвращенного NIL 2: (ASDF / Действия: ВЫПОЛНИТЬ # #). 2: ASDF / ДЕЙСТВИЯ: PERFORM возвращенное NIL 2: (ASDF / Действие: PERFORM # #) 2: ASDF / ДЕЙСТВИЯ: PERFORM возвращенное Т 2: (ASDF / Действие: PERFORM # #) 2: ASDF / ДЕЙСТВИЯ: PERFORM возвращается NIL 2 : (ASDF / ДЕЙСТВИЯ: ВЫПОЛНИТЬ # #); куб.см -m64 -o /home/me/.cache/common-lisp/sbcl-1.3.1.debian-linux-x64/home /me/.dotfiles/sbcl/.quicklisp/dists/quicklisp/software/static-vectors -1,6 / SRC / FFI-types__grovel-tmpOU81XRV0 -I / главная / мне / .dotfiles / SbCl / .quicklisp / dists / quicklisp / программное обеспечение / cffi_0.17.1 / /home/me/.cache/common-lisp/sbcl-1.3 0,1. INPUT: INTERACTIVE OUTPUT: INTERACTIVE: ОШИБОК ВЫВОД: INTERACTIVE: INPUT: INTERACTIVE: ОШИБОК ВЫВОД: INTERACTIVE: IF-INPUT-НЕ-НЕ-EXIST: ОШИБКА: IF-OUTPUT-EXISTS: ПЕРЕЗАПИШЕТЕ: IF-ОШИБОК output- EXISTS: ПЕРЕЗАПИШЕТ: ELEMENT-TYPE: умолчание вНЕШНЕГО-формат: UTF-8: Выход: INTERACTIVE: ОШИБОК ВЫВОД: INTERACTIVE) странное поведение: Мое плавающим х-терминального-эмулятор-окно (X11, i3-Window-менеджер) является выскакивают на фронт! Я должен убить это окно, чтобы процесс компиляции происходит, но после того, что он приземляется прямо в отладчике, со следующим условием: Error / Debugger # не могу быть напечатан читаемо. [Состояние типа CFFI-пресмыкаться: распинаться-ERROR] Запускает: 0: [ПОВТОР] Retry PROCESS-OP на #. 1: [ACCEPT] Продолжить лечение PROCESS-OP на # как был успешным. 2: [ПОВТОР] Повторить операцию ASDF. 3: [CLEAR-КОНФИГУРАЦИЯ-И-ПОВТОР] Повторите операцию ASDF после сброса конфигурации. 4: [ABORT] Откажитесь "мой-проект" 5: [Retry] Retry EVAL текущего верхнего уровня формы. --more-- Backtrace: 0: (CFFI-распинаться: распинаться-ERROR "~ A") # 1: ((LAMBDA NIL: В CFFI-распинаться: ПРОЦЕСС-распинаться-FILE)) 2: (СО-IMPL :: % С-STANDARD-IO-СИНТАКСИС #) 3: ((: мЕТОД ASDF / ДЕЙСТВИЯ: PERFORM (CFFI-распинаться :: ПРОЦЕСС-ОП CFFI-распинаться: распинаться-FILE)) # #) [быстро-метод] 4: ( (SB-PCL :: EMF ASDF / ДЕЙСТВИЯ: ВЫПОЛНИТЬ) # # # #) 5: (SB-DEBUG :: TRACE-CALL # # #
LeinadLime
1

голосов
1

ответ
51

Просмотры

Что ДЕКОДИРОВАТЬ-УНИВЕРСАЛ-TIME сделать в получасовых часовых поясах?

В Common Lisp, функция декодирования-универсальное время возвращает несколько значений, одним из которых является часовым поясом в часах. Что это временная зона содержит в часовых поясах, которые полчаса от от окружающей часовых поясов?
Throw Away Account
1

голосов
3

ответ
65

Просмотры

Можно ли ограничить количество вызовов зэков функционировать в функции дубликата ()?

Я написал функцию двойной (), которые дублируют элементы в списке следующим образом: (DEFUN продублировать (л) (если (нуль л) ноль (минусы (машина л) (минусы (машина л) (дубликат (корд л))) ))) функция дубликата () сделать два вызова зэков работать для каждого элемента в списке: Перерыв 1 [2]> (прослеживать минусы) ;; Traçage-де-ла fonction СВОД. (СВОД) Перерыв 1 [2]> (дубликат '(1 2 3)) 1. Трассировка: (конс' 3 'NIL) 1. Микроэлементы: СВОД ==> (3) 1. Трассировка: (СВОД' 3 «( 3)) 1. Микроэлементы: СВОД ==> (3 3) 1. Микроэлементы: (конс '2' (3) 3) 1. Микроэлементы: СВОД ==> (2 3 3) 1. Микроэлементы: (СВОД «2 '(2 3 3)) 1. Микроэлементы: СВОД ==> (2 2 3 3) 1. Микроэлементы: (конс' 1 «(2 2 3 3)) 1. Микроэлементы: СВОД ==> (1 2 2 3 3) 1. Микроэлементы: (конс '1' (1 2 2 3 3)) 1. Микроэлементы: СВОД ==>
lukas
1

голосов
1

ответ
285

Просмотры

Как вернуть средний элемент списка?

Как определить функцию, которая возвращает средний элемент списка, предполагая, что нечетное число элементов? (Все-но-последний список) возвращает все, кроме последнего элемента списка; (Средний список) возвращает средний элемент списка, чтобы использовать «корд» и «все-но-в прошлом» для определения «середины».
Kmj Thh
1

голосов
1

ответ
110

Просмотры

Can't get AllegroServe / Ironclad to work

(ql:quickload "aserve") fails I'm trying to install AllegroServe. According to http://quickdocs.org/portableaserve/ and to this SO thread the simplest way to get aserve would be to get it with quicklisp: (ql:quickload "aserve") But (ql:quickload "aserve") fails yielding the following error in the debugger buffer: COMPILE-FILE-ERROR while compiling # [Condition of type UIOP/LISP-BUILD:COMPILE-FILE-ERROR] Whereas in the REPL it says: ; Loading "aserve" ; caught ERROR: READ error during COMPILE-FILE: Symbol "BIGNUM-TYPE" ; not found in the SB-BIGNUM package. Line: 53, Column: 52, ; File-Position: 2151 Stream: # What I've tried so far Apparently ironclad is another package, a "cryptographic toolkit written in pure Common Lisp". I downloaded ironclad-v0.34 from http://quickdocs.org/ironclad/ and even found digest.lisp and digests.lisp in the ironclad folder which made me think that I am on the right track. My problem is I don't no where to go from here. How and where do I "install" ironclad? Quickdocs says [ironclad] comes with an ASDF system definition, so (asdf:oos 'asdf:load-op :ironclad) should be all that you need to get started. The testsuite can be run by substituting asdf:test-op for asdf:load-op in the form above. but since I'm not familiar with asdf I don't know what to make of it. Am I even on the right track? Is installing the ironclad package the right way to make the error COMPILE-FILE-ERROR while compiling #go away? If so what do I do with the ironclad-v0.34 folder? (I'm using sbcl on a windows 10 machine.)
Frank
1

голосов
1

ответ
103

Просмотры

Как задать параметр в формате управления струне на Common Lisp в качестве переменной? [Дубликат]

Этот вопрос уже есть ответ здесь: Использование переменной в качестве префикса аргумента директивы формата 1 ответ Что я могу сделать: CL-USER> (формат ноль «~ 10:») «Foobar» Но я хочу передать 10 в качестве параметра, как : CL-USER> (формат ноль "~ d:" 10) ;; но бросает ошибку «Foobar» Существует способ сделать это? Потому что я не хочу сделать это: CL-USER> (формат ноль (формат всухую «~~~ d:» 10)) «Foobar» В Python или C возможно прохождение переменных параметров управления, используя строку *, как это : печати ( "% * с" % (10, "Foobar")) Я хочу так же в формате Common Lisp. Заранее спасибо.
Manoel Vilela
1

голосов
1

ответ
75

Просмотры

Я могу (ASDF: нагрузка-система: Foo), но ASDF все еще жалуется, что «Foo" не обозначает пакет»

Пытаясь наконец начать использовать ASDF для моего LISP каракулей, я попытался создать простой пример. Файлы; Содержание example.asd (ASDF: defsystem "пример": название "Пример": зависит от-( "Foo"): компоненты ((: файл "пример"))) и; содержание example.lisp (defpackage: пример (: использование: сло: ASDF: Foo)) (в-пакет: например) (где «Foo» на самом деле «сл-WAV», но проблема остается с любым из пакетов, которые я установлены локально). Теперь, даже если работает (ASDF: нагрузки системы: Foo) работает, когда я пытаюсь оценить (ASDF: сделать: пример) я получаю сообщение об ошибке: Имя «Foo» не обозначает какой-либо пакет. Что я делаю неправильно? Для связи моя ASDF-версия «3.1.5», пакет «Foo» установлен с (последняя версия) quicklisp,
BlenderBender

Просмотр дополнительных вопросов