I think you're right. I've done it one better though; there were several calls to #'intern, and I now provide the package argument for each. Checked in.
Thanks. Liam
On 3/2/08, Zach elzacho@gmail.com wrote:
Okay, so this is my first post, so I may be completely misguided,
After loading asdf loading GSLL, I find that I cannot do any matrix or permutation stuff with it, unless I did it from withing the package itself. After a while I tracked this to MAKE-SYMBOL-FROM-STRINGS (init/utility.lisp) which interns symbols on the fly. The problem is that it creates symbols in whatever package you happen to be in when it is called. This matters because it is used create class name symbols which should be in the package GSLL not where ever I happen to be using GSLL from.
For example:
(gsl:letm ((perm-1 (gsl:permutation 4 t))) (gsl:set-identity perm-1) (gsl:maref perm-1 2) ) ==> Error: There is no class named GSL-PERMUTATION.
(use-package :gsll) (gsl:letm ((perm-1 (gsl:permutation 4 t))) (gsl:set-identity perm-1) (gsl:maref perm-1 2) ) ==> Error: There is no class named GSL-PERMUTATION.
So I think we want to change...
(defun make-symbol-from-strings (&rest strings) "Construct a symbol by concatenating words with hyphens." (intern (format nil "~{~:@(~a~)~^-~}" (mapcar #'string strings))))
...to...
(defun make-symbol-from-strings (&rest strings) "Construct a symbol by concatenating words with hyphens." (intern (format nil "~{~:@(~a~)~^-~}" (mapcar #'string strings)) :gsll))
With the change the test works (returns 2).
What do you think? Zach
Gsll-devel mailing list Gsll-devel@common-lisp.net http://common-lisp.net/cgi-bin/mailman/listinfo/gsll-devel