[EMAIL PROTECTED] writes: > I solve my problem. I hope in *right* way... > > (defmacro smthing (x) > (let ((s (read-from-string (concatenate 'string "print-" x)))) > `(defun ,s NIL (print ,x)))) > > ... still, I don't know how to force INTERN to intern `foo', not `|FOO|' > (yes, this is CMUCL-specyfic question -- I can intern `foo' in clisp: > (progn (setq *print-escape* NIL) (intern "foo")) ==> foo).
The question is not CMUCL-specific, and your solution for clisp is just an illusion of the right thing: [9]> (eq (progn (setq *print-escape* NIL) (intern "foo")) 'foo) NIL [10]> (eq (progn (setq *print-escape* NIL) (intern "foo")) '|foo|) T [11]> (symbol-name (progn (setq *print-escape* NIL) (intern "foo"))) foo [12]> (symbol-name 'foo) FOO *PRINT-ESCAPE* does not affect INTERN, but only output of results. Symbol names _are_ case-sensitive is CL. By default READ translates characters in a symbol name to upper case. Use what Chris Baker has suggested. -- Regards, Alexey Dejneka "Alas, the spheres of truth are less transparent than those of illusion." -- L.E.J. Brouwer
