[Ecls-list] SI:QUASIQUOTE meets CASE during COMPILE-FILE

Samium Gromoff _deepfire at feelingofgreen.ru
Wed Apr 9 18:09:42 UTC 2008


Good day folks,

During another session of porting my project to ECL, I was confronted
with what appears to be a conflict between quasiquotology and CASE,
which only appears during LOADing a COMPILE-FILE'd source,
but not during COMPILE or LOAD-as-source.

I've narrowed it down to the following:

foo.lisp: --- 8< ---
(defun foo (param)
  (case param
    `',@(list)
    (t nil)))

deepfire at canopus:~/local/mdb$ ecl
ECL (Embeddable Common-Lisp) 0.9j (CVS 2008-03-18 22:50)
Copyright (C) 1984 Taiichi Yuasa and Masami Hagiya
Copyright (C) 1993 Giuseppe Attardi
Copyright (C) 2000 Juan J. Garcia-Ripoll
ECL is free software, and you are welcome to redistribute it
under certain conditions; see file 'Copyright' for details.
Type :h for Help.  Top level.
> (load (compile-file "foo.lisp"))
;;; Loading #P"/usr/lib/ecl/cmp.fas"
;;; Loading #P"/usr/lib/ecl/sysfun.lsp"
;;; Compiling foo.lisp.
;;; Compiling (DEFUN FOO ...).
;;; End of Pass 1.  
;;; Emitting code for FOO.
;;; Calling the C compiler... 
;;; Note: Invoking external command:
;;; gcc  -D_GNU_SOURCE -g -O2 -fPIC  -fstrict-aliasing -Dlinux -O "-I/usr/include/" -w -c "/mnt/ext/home/deepfire/local/mdb/foo.c" -o "/mnt/ext/home/deepfire/local/mdb/foo.o"
;;; Note: Invoking external command:
;;; gcc -o "/mnt/ext/home/deepfire/local/mdb/foo.fas" -L"/usr/lib/" "/mnt/ext/home/deepfire/local/mdb/foo.o"  -shared    -lecl -ldl  -lm   -lgmp
;;; OPTIMIZE levels: Safety=2, Space=0, Speed=3, Debug=0
;;; Finished compiling foo.lisp.
;;; Loading "/mnt/ext/home/deepfire/local/mdb/foo.fas"
A comma has appeared out of a backquote.
Broken at EVAL.No restarts available.
Broken at EVAL.
COMMON-LISP>> 

It doesn't seem to happen with WHEN wrapping, or when
doing a:

> (compile nil
    (lambda ()
      (defun foo (param)
        (case param
          `',@(list)
          (t nil)))))
;;; Loading #P"/usr/lib/ecl/cmp.fas"
;;; Loading #P"/usr/lib/ecl/sysfun.lsp"
;;; End of Pass 1.  
;;; Calling the C compiler... 
;;; Note: Invoking external command:
;;; gcc  -D_GNU_SOURCE -g -O2 -fPIC  -fstrict-aliasing -Dlinux -O "-I/usr/include/" -w -c "/mnt/ext/home/deepfire/local/mdb/ECL001HagJxj.c" -o "/mnt/ext/home/deepfire/local/mdb/ECL001HagJxj.o"
;;; Note: Invoking external command:
;;; gcc -o "/mnt/ext/home/deepfire/local/mdb/ECL001HagJxj.fas" -L"/usr/lib/" "/mnt/ext/home/deepfire/local/mdb/ECL001HagJxj.o"  -shared    -lecl -ldl  -lm   -lgmp
;;; OPTIMIZE levels: Safety=2, Space=0, Speed=3, Debug=0
#<compiled-function 08400a08>
NIL
NIL
>

As evident from the banner, ECL version is CVSish.

regards, Samium Gromoff




More information about the ecl-devel mailing list