I find that it is because the parenscript's *loop-keyword* is not effective when macro expanding loop-case, it seems that the common lisp's loop keywords is effective. In the ps-loop.lisp source, changing
(defvar *loop-keywords* ..)
into
(defparameter *loop-keywords* ...)
would solve the problem.
On Sat, Jan 5, 2013 at 6:33 PM, Canhua dreameration@gmail.com wrote:
Following is errors when loading ps-loop.lisp
; file: /root/vendor-src/parenscript/src/lib/ps-loop.lisp ; in: DEFUN FOR-CLAUSE ; (PARENSCRIPT::LOOP-CASE PARENSCRIPT::TERM ; (:FROM (PARENSCRIPT::FOR-FROM PARENSCRIPT::PLACE PARENSCRIPT::STATE)) ; (:= (PARENSCRIPT::FOR-= PARENSCRIPT::PLACE PARENSCRIPT::STATE)) ; ((:IN :ACROSS) (PARENSCRIPT:FOR-IN PARENSCRIPT::PLACE PARENSCRIPT::STATE)) ; (:ON (PARENSCRIPT::FOR-ON PARENSCRIPT::PLACE PARENSCRIPT::STATE)) ; (:OF (PARENSCRIPT::FOR-KEYS-OF PARENSCRIPT::PLACE PARENSCRIPT::STATE)) ; (OTHERWISE ; (ERROR "FOR ~s ~s is not valid in PS-LOOP." PARENSCRIPT::PLACE ; PARENSCRIPT::TERM))) ; ; caught ERROR: ; during macroexpansion of ; (LOOP-CASE TERM ; (:FROM #) ; ...). ; Use *BREAK-ON-SIGNALS* to intercept: ; ; OF isn't a recognized loop keyword.