[Gsll-devel] MAKE-SYMBOL-FROM-STRINGS does the wrong thing?

Zach elzacho at gmail.com
Mon Mar 3 02:37:50 UTC 2008


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/gsll-devel/attachments/20080302/f4f69a28/attachment.html>


More information about the gsll-devel mailing list