to post messages and comments.

лисперы, а если ли способ получить бэктрейс прилетевшего condition'а? Например в виде строки (лучше, конечно, списка). Лучше переносимо, но сгодится и sbcl-way. Чтот пока не нахожу. trivial-backtrace дает бэктрейсы точки вызова (print-backtrace err), а не точки выброса этого самого err.

обнаружил приличный недостаток в iterate, по сравнению с loop или почти любым другим способом итерации.
в лиспах, благодаря "привязкам", если это вам нужно, можно сколько угодно юзать одно и то же имя в разных контекстах.
например так:
ANTON0XF> (defun test (p)
			(loop for p in p
			   collect p))
TEST
ANTON0XF> (test '(1 2 3))
(1 2 3)
удобно. но теперь давайте попробуем дословный аналог в iterate:
ANTON0XF> (defun test (p)
			(iter (for p in p)
				  (collect p)))
; ...
; caught STYLE-WARNING:
;   The variable P is defined but never used.
; ...
TEST
ANTON0XF> (test '(1 2 3))
NIL
жепа( оно может только так:
ANTON0XF> (defun test (p)
			(iter (for q in p)
				  (collect q)))
TEST
ANTON0XF> (test '(1 2 3))
(1 2 3)

Кто-нибудь сталкивался с cl-closure-template? Есть ли готовое средство чтобы он сам следил за шаблонами на FS и их перекомпилировал при изменении файла(ов) (при фейле компиляции например не переопределять функцию)? Задолбало перекомпиливать руками.

cast @archimag

я не понимаю как работает backquote((
разбирал вот такой простой пример
(результат локализации непонимания из макры):

(let ((p 'q))
  `(let ((r 's))
	 `(eq ',r ',',p)))
следуя опрделению в стандарте, путем эквивалентных преобразований,
привел его к тому же виду, в который оно вычисляется. но в голове вся
эта цепочка определенно не держится( и почему здесь нужно именно ',',
я так и не понял

может я просто не понимаю чего-то?

Вопрос может и дурацкий, но все же: можно как-то получить список всех символов и их значения из текущего окружения? Скажем в repl было объявлено несколько функций/макросов, протестировал их, исправил какие-то ошибки, могу ли я теперь увидеть список введенных символов и их определения, чтобы отправить их в файл какой-нибудь?

Я вот немного не вкуриваю. Есть handlers — они обрабатывают ситуацию в том контексте в котором был брошен condition. А restarts что такое? Не, понятно, что круто в дебаггере выбрать что сделать конкретной проблемой. Или я вообще не понимаю сути condition system? Где есть более-менее ясное объяснение на пальцах? PCL курил.

Ну и как этим можно пользоваться? (defpackage :hello-world
(:use :cl :gobject :gtk)
(:export :main :run))

(in-package :hello-world)

(defun main ()
(within-main-loop
(let ((w (make-instance 'gtk-window :title "Hello, world"))
(l (make-instance 'label :label "Hello, world!")))
(container-add w l)
(connect-signal w "destroy" (lambda (w)
(declare (ignore w))
(gtk-main-quit)))
(widget-show w))))

(defun run ()
(main)
(join-main-thread))

Чят, я читнул PCLца и заблевал. (defun apply-to-1 (f) (f 1)) НЕ РОБОТАЕТ, и вынуждает меня юзать невнятный костыль apply. Подумал написать макру, но вспомнил о куче CL-способов передачи аргументов в функцию и решил, что лень. Запустил схеморепл и отхожу.

cl

asdf — это, конечно, круто, но сделано везде всё на редкость криво и запутанно. Чтобы собрать cl-ppcre с sbcl (!), мне пришлось поставить cl-asdf, хотя, казалось бы, уже всё есть. Нет, может, что и в cl-ppcre.install было криво прописано, но лично мне неочевидно, с чего бы при компиляции потребовался именно /usr/share/common-lisp/source/asdf/asdf.lisp, а не то, что идёт с sbcl. В общем, нахер такие вещи надо закапывать и переделывать.
Алсо, прозреваю, если бы существовал какой-нибудь канонический компилятор CL (ну, как с интерпретаторами обычно бывает: Python, Perl, Ruby…), всё было бы гораздо проще.

cl

Посидел я тут, посидел да и подумал: а на что нам макросы? Вот вам и няшный карринг: (defmacro defcurried (new-f f &rest built-in) `(defun ,new-f (&rest rest) (apply #',f (append ',built-in rest))))

cl

clisp и ecl мало того, что требуют стопицот обратных кавычек для квазицитирования (одна их ну никак не устраивает), так ещё и разворачивают вызов макроса в какую-то дебильную чушь. Может, я что-то упустил?

cl

Ввиду того, что я так и не понял, в чём же дело (может, в sbcl?) и как же быть, объявляю предыдущий макрос недействительным.

Что за нахрен? Не могу собрать cl-ncurses, ибо “/usr/lib/libncurses.so: файл слишком мал” O_o. В то же время питоновские биндинги отлично воркают.

cl

Ругайте мой первый experience в Common Lisp. Эта штука использует FIFO mcabber, чтобы отправлять координаты на жуйку. И, да, что-то мне говорит, что на sh было бы короче. Anyway, dumpz.org