> разворачиваем и читаем README. Поступаем как там написато. Если чёто непонятно/неполучяецо вежливо задаём конкретный вопрос на ЛОР в раздел Development
Дальше цитаты из README
===================================================================
> 2. Compile the Alien Function package and save a new sbcl.core image:
> $ cd sbcl-af
> $ sbcl --load "system"
$ sbcl --load "system"
This is SBCL 0.9.17, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>;.
SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses. See the CREDITS and COPYING files in the
distribution for more information.
debugger invoked on a SIMPLE-ERROR:
Error during processing of --eval option (LOAD #P"system"):
"system.lisp" does not exist.
Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [CONTINUE] Ignore and continue with next --eval option.
1: [ABORT ] Skip rest of --eval options.
2: Skip to toplevel READ/EVAL/PRINT loop.
3: [QUIT ] Quit SBCL (calling #'QUIT, killing the process).
=================================================================
> - Make sure ASDF finds the system definition files:
>
> (push
> #+sbcl(truename #p"clg:systems")
> #+cmu(concatenate 'string (unix-namestring #p"clg:systems") "/")
> asdf:*central-registry*)
$ sbcl
This is SBCL 0.9.17, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>;.
SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses. See the CREDITS and COPYING files in the
distribution for more information.
* (push
#+sbcl(truename #p"clg:systems")
#+cmu(concatenate 'string (unix-namestring #p"clg:systems") "/")
asdf:*central-registry*)
debugger invoked on a SB-INT:SIMPLE-FILE-ERROR:
The file "CLG:SYSTEMS" does not exist.
Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [ABORT] Exit debugger, returning to top level.
(TRUENAME #P"CLG:SYSTEMS")
0]
====================================================================
> 3. Compile and load the system:
>
> (asdf:oos 'asdf:load-op :gtk)
$ sbcl
This is SBCL 0.9.17, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>;.
SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses. See the CREDITS and COPYING files in the
distribution for more information.
* (asdf:oos 'asdf:load-op :gtk)
debugger invoked on a ASDF:MISSING-COMPONENT: component "gtk" not found
Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [ABORT] Exit debugger, returning to top level.
(ASDF:FIND-SYSTEM :GTK T)
0]
====================================================================
> Казалось бы, что может быть проще?
> Да, никто так и не вспомнил про maxima, замечательную алгебраическую систему, написанную на Lisp.
Я вспоминал. Как вторую (после emacs) систему с Лиспом на моей машине. Еще вспоминали reduce, но я с ним знаком исключительно заочно. А вот столь нужная мне система формального логического вывода HOL, с которой я работаю чуть ли не каждую неделю, написана отнюдь не на Лиспе.
Если уайтспейсом ты называешь Питон, то по сравнению с Лиспом он мэйнстрим. По сравнению с VB - не очень распространенный язык (но уже не маргинальный, как лет 8-10 назад).
Поправьте меня, если ошибаюсь, но обе системы родом из 70-х годов, времен, когда Лисп считался единственным языком, пригодным для символических вычислений. Но это же 30 лет прошло...
Упс! Не сделал. Но теперь другая беда (собственно, это и было сразу,
просто когда писал на форум, уже вышел из каталога):
~/src/sbcl-0.8.21-af $ sbcl --load "system.lisp"
This is SBCL 0.9.17, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>;.
SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses. See the CREDITS and COPYING files in the
distribution for more information.
; compiling file "/home/eugine/src/sbcl-0.8.21-af/static-vector.lisp" (written 20 APR 2005 10:37:40 PM):
; compiling (IN-PACKAGE "SB-ALIEN")
; compiling (EXPORT (QUOTE #))
; compiling (DEFSTRUCT (STATIC-VECTOR #) ...)
debugger invoked on a SIMPLE-ERROR:
Error during processing of --eval option (LOAD #P"system.lisp"):
Lock on package SB-INT violated when globally declaring the ftype of
MAKE-STATIC-VECTOR.
See also:
The SBCL Manual, Node "Package Locks"
Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [IGNORE-ALL ] Ignore all package locks in the context of this operation.
1: [UNLOCK-PACKAGE] Unlock the package.
2: [CONTINUE ] Ignore and continue with next --eval option.
3: [ABORT ] Skip rest of --eval options.
4: Skip to toplevel READ/EVAL/PRINT loop.
5: [QUIT ] Quit SBCL (calling #'QUIT, killing the process).
можно попробовать unlock (ввести туда ":1") если непоможет проигнорировать (ввести ":0") если совсем ничё не помогло, прочитать инструкцию :D http://www.sbcl.org/manual/
Вообще, ИМХО с cmucl траблей меньше. Я ранее сравнивал и решил таки cmucl юзать.
> Кстати о статической типизации, недавно нашёл один интересный лисп: http://lush.sourceforge.net/. В нём есть офигенно эффективный компилятор для статически типизированного кода. Если быть точным, генерируется код на C, и код получается обычно такой же, как я бы руками написал. Ну и что меня вообще добило, в программу на лиспе можно запросто делать вставки на С. :) Кто там хотел лисп с ассемблерными вставками? Да лехко! :D
Не, нам такого не надо. Макр нет, объектная система - хуже чем у тикля. А код на си генерируют gcl и ecl - почти полноценные CL-и :)
Я исправил ошибку с путем после своего поста. Вот где лежат исходники
сейчас:
http://ignas.pov.lt/lambda-gtk_0.1.tar.gzhttp://common-lisp.net/project/cffi/releases/cffi_0.9.2.tar.gz
Я не знаю, как конфигурируется в Генту, поэтому снеси
поставленные тобой из ПОРТЕЖЕЙ lambda-gtk и cffi. Сделай, как я
написал.
$ls ~/sbcl
lambda-gtk_0.1/
cffi_0.9.2/
$ls -l ~/.sbcl/systems
cffi.asd -> /home/<user>/sbcl/cffi_0.9.2/cffi.asd
lambda-gtk.asd -> /home/<user>/sbcl/lambda-gtk/lambda-gtk.asd
lambda-gtk-examples.asd -> /home/<user>/sbcl/lambda-gtk/lambda-gtk-examples.asd
Проверь обязательно правильность линков на *.asd-файлы в каталоге. Эти
линки -- это что-то вроде make-файлов (только на Лиспе). Там
зависимости пакетов и пр. информация. Не ошибись в именах. Я в
инструкции тебе опечатался и назвал пакет lambda-gkt-examples.
Заходи в sbcl и набери тогда уж (require 'lambda-gtk-examples). Должно
пойти. Я только что проверил у себя. Все отлично работает.
После компиляции запускай простую рисовалочку (scrible-simple) и др.
примеры (см. выше). Это примеры из онлайн-учебника с gtk.org, кажется.
Всё там есть, только называется ни defmacro, а dm почему-то. :)
> А код на си генерируют gcl и ecl - почти полноценные CL-и. :)
Знаем мы, какой они код генерируют, это убиться проще! :D Ну и сишные вставки им и не снились, понятно.
Короче, lush - это такой лисп для задач с элементами числодробления. :) Там в комплекте и привязки к соответствующим библиотекам есть: GSL, FFTW, BLAS, LAPACK, MPI и т. д. По количеству баратеек для околонаучных расчётов он явно рулит.
>3. возьми clg2 (он поновее) или cells-gtk - вроде наиболее динамичный на данный момент.
Я пробовал давно cells-gtk. Мне не понравилось. Там ему какой-то .so файл зачем-то нужен, который нормально не скомпилировался из C. Мрак. какой-то. Хотя сама идея cells мне нравится.
Вот только gtk-cells с clisp не очень получяецо. Если в виджет передавать строки с кириллицей, будет "невозможно отконвертировать к инородному типу FFI:UCHAR". А с cmucl дык в самый раз.
Тут была речь об инлайне? И в Лиспе есть. В компиляторах. :)
(declaim (inline f)) (defun f ...)
Кто-то спрашивал, во всех-ли реализациях оптимизация и типы? Все эти параметры оптимизации стандартом оговариваются. Реализовано не везде, а там, где это нужно: CMUCL, SBCL, Allegro CL, LispWorks. Это я знаю. по-моему, еще в Corman Lisp. Последнии три -- коммерческие, но есть бесплатные версии для личного пользования (по-моему). Насчет GCL и ECL не знаю. Не интересовался.
Первый вариант -- (asdf:operate 'asdf:load-op 'lambda-gtk-examples) -- тоже сработал, и тоже ни один из примеров не запускается. Кроме того, в упор не вижу, где здесь "по цепочке скомпилируется cffi, потом
lambda-gtk, потом lambda-gtk-examples".
> Кто-то спрашивал, во всех-ли реализациях оптимизация и типы? Все эти параметры оптимизации стандартом оговариваются. Реализовано не везде, а там, где это нужно: CMUCL, SBCL ...
Я правильно понимаю, что можно писать статически типизированный код на Common Lisp, если использовать CMUCL или SBCL, и этот код - стандартен и воспринимается остальными реализациями CL (пусть даже проверки типов и не работают в остальных реализациях) ?
> Я правильно понимаю, что можно писать статически типизированный код на Common Lisp, если использовать CMUCL или SBCL, и этот код - стандартен и воспринимается остальными реализациями CL (пусть даже проверки типов и не работают в остальных реализациях) ?
Наверное тебе пора заглянуть в HyperSpec. А отличия от стандарта описаны в каждой реализации.
Посыпаю голову пеплом! У меня версия lambda-gtk 0.2! Возможно, что 0.1 с cffi неправильно работает. Давай почту - я тебе залью, потому что я не помню, где взять исходники. По-моему, битая ссылка на common-lisp.net туда и вела. А сейчас что-то там не так. Сейчас вышлю и все должно заработать.