[slime-devel] SLIME's readline problem?
Helmut Eller
heller at common-lisp.net
Thu Apr 29 15:33:18 UTC 2010
* 亀田馬志 [2010-04-29 16:23+0200] writes:
> C-c C-k shows such a message below.
>
> ; in: DEFMACRO! NIF
> ; (DEFMACRO! NIF (O!EXPR POS ZERO NEG)
> ; `(COND ((PLUSP ,G!EXPR) ,POS) ((ZEROP ,G!EXPR) ,ZERO) (T
> ,NEG)))
> ;
> ; caught ERROR:
> ; (during macroexpansion of (DEFMACRO! NIF ...))
> ; The function O!-SYMBOL-P is undefined.
> ;
> ; compilation unit finished
> ; caught 1 ERROR condition
>
> ; /home/cametan/lol.chapter_2.fasl written
> ; compilation finished in 0:00:00.091
>
> Strange. The function O!-SYMBOL-P was THERE on the file.
Yes, but it's needed "during macroexpansion". If you only compile
a function you can't call it yet.
You could try to just load it with C-c C-l. Then every toplevel form
is evaluated immediately and available in the following forms.
But there are also other missing function like SYMB and FLATTEN.
> So I check sbcl repl directly on my bash; in that case, the file could be
> loaded and compiled without any problem.
> Therefore, SLIME must have the problem.
If you load it before compiling it you make all definitions available
for macroexpansion. If you execute (load (compile-file "lol.chatper_2.lisp"))
in a clean session you'll will most likely see the same problem.
> Actually, if I made the function on REPL on SLIME, NO PROBLEM. The problem is
> occured when I made a file, load, and compile THE FILE.
>
> I checked the file, then I found both g!-symbol-p and o!-symbol-to-g!-symbol
> are not recognized by SLIME, either. Then, I concluded functions with "!"
> are not recognized by SLIME.
>
> Is there any solution about that? I use Ubuntu 9.10, SBCL and Emacs 23
> provided by Ubuntu. Also I use cvs version of SLIME(newest).
When you get more experienced you'll recognize that you need EVAL-WHEN in
situations like these. You will also learn the value of adding an
IN-PACKAGE form at the beginning of a file.
> P.S. I also found SLIME's REPL don't recognized reader macros. Though making
> reader macro with #foo, SLIME says something like "incomplete input".
Well, yes, SLIME assumes that you want to enter Lisp syntax not some
random character noise. C-u RET will accept the current input anyway
even if it doesn't look like a complete form.
Helmut
More information about the slime-devel
mailing list