Acabo de comenzar con common-lisp, viniendo de C++ y Python. Estoy intentando ejecutar un programa SDL simple que no hace más que mostrar una imagen en pantalla. Puedo hacerlo funcionar desde dentro de SLIME. El problema es que no funcionará cuando se ejecute desde el shell como un script.ceceo como una secuencia de comandos shebang vs lisp ejecutando en SLIME
Mi programa es el siguiente:
#!/usr/bin/sbcl --script
(asdf:operate 'asdf:load-op :lispbuilder-sdl)
(defun main()
(sdl:with-init()
(sdl:window 320 240)
(sdl:draw-surface (sdl:load-image "image.png"))
(sdl:update-display)
(sdl:with-events()
(:quit-event() t)
(:video-expose-event() (sdl:update-display)))))
(main)
Cuando ejecuto esto como un guión, me sale el siguiente error:
[email protected]:~/projects/common-lisp/sandbox$ ./hello-world.lisp
unhandled ASDF:MISSING-COMPONENT in thread #<SB-THREAD:THREAD "initial thread" RUNNING {AA5E849}>:
component "lispbuilder-sdl" not found
0: (SB-DEBUG::MAP-BACKTRACE #<CLOSURE (LAMBDA #) {AAF1EF5}>)[:EXTERNAL]
(... larga traza omitido)
Curiosamente, este programa funciona bien si hago lo siguiente. Abro el programa en Emacs, se inicia BABA en otra ventana, y en la ventana limo, entro en la primera línea del programa:
(asdf:operate 'asdf:load-op :lispbuilder-sdl)
Luego, en la ventana del editor, me golpeó Cc Ck (compilación/carga archivo). Aparece una ventana que muestra image.png, como se esperaba.
¿Por qué esto no funciona cuando se ejecuta como un script shebang? ¿Cómo puedo arreglarlo?