problems with intl.lisp and sbcl
- Subject: problems with intl.lisp and sbcl
- From: Andreas Eder
- Date: Tue, 10 Feb 2009 22:43:25 +0100
Hi,
I have problems compiling intl.lisp with sbcl
(version SBCL 1.0.19-gentoo) ; if a make the following changes i
succed in compiling, but it looks fishy to me:
*** src/intl.lisp 2009-02-10 22:32:06.000000000 +0100
--- /tmp/intl.lisp 2009-02-10 22:28:18.000000000 +0100
***************
*** 30,36 ****
(ext:file-comment
"$Header: /cvsroot/maxima/maxima/src/intl.lisp,v 1.3 2009/02/09 20:32:53 rtoy Exp $")
! (in-package "INTL")
(defvar *locale-directory* "/usr/share/locale/")
(defvar *locale* "C")
--- 30,36 ----
(ext:file-comment
"$Header: /cvsroot/maxima/maxima/src/intl.lisp,v 1.3 2009/02/09 20:32:53 rtoy Exp $")
! ;(in-package "INTL")
(defvar *locale-directory* "/usr/share/locale/")
(defvar *locale* "C")
***************
*** 236,245 ****
`(dgettext ,*default-domain* ,string))))
(defun install ()
! (unless #+(or CMU SBCL) (eq (get-macro-character #\_)
! #'lisp::read-dispatch-char)
! #-(or CMU SBCL) (get-macro-character #\_)
! (make-dispatch-macro-character #\_ t))
(set-dispatch-macro-character #\_ #\" #'read-translatable-string)
(set-dispatch-macro-character #\# #\" #'read-translatable-string)
t)
--- 236,244 ----
`(dgettext ,*default-domain* ,string))))
(defun install ()
! (unless #+CMU (eq (get-macro-character #\_) #'lisp::read-dispatch-char)
! #-CMU (get-macro-character #\_)
! (make-dispatch-macro-character #\_ t))
(set-dispatch-macro-character #\_ #\" #'read-translatable-string)
(set-dispatch-macro-character #\# #\" #'read-translatable-string)
t)
in my sbcl (get-macro-character #\_) returns nil, unlike cmucl. OK
thats a simple change, but what amazes me are the errors I get
with the (in-package "INTL") form still active:
; in: DEFUN READ-LELONG
; ((INTL::A (INTL::READ-CHAR INTL::STREAM))
; (INTL::B (INTL::READ-CHAR INTL::STREAM))
; (INTL::C (INTL::READ-CHAR INTL::STREAM))
; (INTL::D (INTL::READ-CHAR INTL::STREAM)))
;
; caught COMMON-LISP:ERROR:
; illegal function call
; (INTL::LET
; ((INTL::A (INTL::READ-CHAR INTL::STREAM))
; (INTL::B (INTL::READ-CHAR INTL::STREAM))
; (INTL::C (INTL::READ-CHAR INTL::STREAM))
; (INTL::D (INTL::READ-CHAR INTL::STREAM)))
; (INTL::+ (INTL::ASH (INTL::CHAR-CODE INTL::D) 24)
; (INTL::ASH (INTL::CHAR-CODE INTL::C) 16)
; (INTL::ASH (INTL::CHAR-CODE INTL::B) 8) (INTL::CHAR-CODE INTL::A)))
;
; note: The first argument never returns a value.
; (INTL::CHAR-CODE INTL::D)
; ==>
; INTL::D
this looks very suspicious to me. Has anybody got an idea?
Thanks in advance,
Andreas
--
ceterum censeo redmondinem esse delendam.