← Архив: Common Lisp

cl-cairo2 не загружается

Author: · 02.04.2010 21:44
· original author: Jax
Пробую так:
* (find-package 'asdf)
#<PACKAGE "ASDF">
* (find-package 'asdf)
#<PACKAGE "ASDF">
* (asdf:operate ’asdf:load-op :cl-cairo2)
debugger invoked on a SB-INT:SIMPLE-READER-PACKAGE-ERROR in thread #<THREAD
                                                                     "initial thread" RUNNING
                                                                     {AA20949}>:
  SB-INT:SIMPLE-READER-PACKAGE-ERROR on #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDIN*
                                          {911F759}>:
    package "’ASDF" 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.
(SB-IMPL::READ-TOKEN
 #<SYNONYM-STREAM :SYMBOL SB-SYS:*STDIN* {911F759}>
 #\RIGHT_SINGLE_QUOTATION_MARK)
0]                     
Чего ему не хватает?
P. S. SBCL 1.0.37
· original author: Jax
cl-gtk2-cairo, в отличие от предыдущего, работает.
· original author: Jax
Кто-нибудь знает, в чем разница между этими пакетами? Кроме того, что один успешно загружается, а второй - нет.
· original author: dmitry_vk
Что-то здесь не так. cl-gtk2-cairo зависит от cl-cairo2, т.е., ASDF загружает cl-cairo2 до cl-gtk2-cairo.
Кстати, а почему перед asdf:load-op стоит на ', а ’?
· original author: Jax
>Кстати, а почему перед asdf:load-op стоит на ', а ’?
* (asdf:operate ’asdf:load-op :cl-cairo2)
                        ^^^ здесь?
По видимому, чтобы символ не вычислялся. Или я не понял вопроса?
Если убрать  кавычку, будет
debugger invoked on a UNBOUND-VARIABLE in thread #<THREAD
                                                   "initial thread" RUNNING
                                                   {AA206A9}>:
  The variable ASDF:LOAD-OP is unbound.
...
Я все делал по туториалу http://www.cliki.net/FirstStepsWithAsdfAndAsdfInstall .
· original author: dmitry_vk
Нет, я про то, что там стоит не обычный апостроф «'», а кавычка «’». И эта кавычка читается как часть имени пакета «’ASDF» (обратите внимание, это не ASDF, а ’ASDF). Замените эту кавычку на апостроф, и все заработает.
· original author: Jax
А можно как-то узнать строку и файл, при компиляции которых возникает ошибка? Искал grep, но ничего похожего на это не нашел.
· original author: dmitry_vk
А вы же сами это вводите. Вот где вводите, там и ищите ;)
В вашем сообщении: «* (asdf:operate ’asdf:load-op :cl-cairo2)» - вот тут вот и введена кавычка вместо апострофа.
· original author: Jax
>(asdf:operate `asdf:load-op :cl-cairo2)
Так выполняется.
Почему тогда работает для iterate (asdf:oos 'asdf:load-op :iterate) и еще с десятком пакетов?
· original author: Jax
P. S. В http://www.cliki.net/FirstStepsWithAsdfAndAsdfInstall тоже с кавычкой " ' ".
· original author: dmitry_vk
Да потому что кавычка и апостроф - вещи разные.
· original author: dmitry_vk
PS. Кстати, а какой шрифт у вас используется для отображения текста, печатаемого/набираемого в лиспе? Может быть, там эти символы видны одинаково?
· original author: dmitry_vk
>P. S. В http://www.cliki.net/FirstStepsWithAsdfAndAsdfInstall
Там тоже используется апостроф.
Апостроф и должен использоваться.
· original author: Jax
>PS. Кстати, а какой шрифт у вас используется для отображения текста, печатаемого/набираемого в лиспе? Может быть, там эти символы видны одинаково?
С шрифтами все ОК. П
утаница возникала из-за двух команд с одинаковым назначением:
(asdf:oos 'asdf:load-op :xmls) (здесь правильно с кавычкой)
(asdf:operate `asdf:load-op :cl-cairo2) (а здесь - с апострофом)
Чем они отличаются?
· original author: Jax
Никак не привыкну к этому WYSIWYG. :(
· original author: dmitry_vk
Суть в том, что «’asdf:load-op» читается имя «’ASDF:LOAD-OP» (символ «’» является частью имени), т.к. символ с именем «LOAD-OP» внутри пакета с именем «’ASDF».
А «'asdf:load-op» читается как «(QUOTE ASDF:LOAD-OP)». Символ «'» не является частью имени, а является символом-сокращением для специальной формы QUOTE. Результат выполнения формы (QUOTE ASDF:LOAD-OP) - это символ с именем LOAD-OP внутри пакета ASDF.
Всех деталей точно не знаю, их надо смотреть в CLHS.
· original author: Jax
В моих сообщениях вид апострофа и кавычки различается, в ваших (03.04.2010 17:40) - нет.
И да, asdf:oos с кавычкой работает так же, как и с апострофом. Вопрос был: почему так.
Разница имеет место быть только для asdf:operate.
· original author: archimag
to Jax:
Внимание, почувствуйте разницу между следующими тремя (!) символами: '’`Символы ' и ` являются допустимыми в данном контексте, но символ  никакого специального смысла в себе не содержит и воспринимается просто как часть имени. При чём, обычно даже набрать символ  на клавиатуре довольно проблематично, ибо это вообще не ansii-символ!
· original author: Jax
>Внимание, почувствуйте разницу между следующими тремя (!) символами: '’`
Похоже, дело было именно в этом.
Спасибо всем за пояснения.