AFAICT that just defines a symbol to itself, and only then if you run:

(define foo 1)
(define foo (unintern 'foo))
(eq? foo |foo|) => #t

But, as I said, that only defines 'foo as |foo|: it doesn't /undefine/ the symbol, and it needs to have side-effects, since the CL /unintern/ AFAIK effects the targeted package, or in our case module.

After uninterning /foo/, if I were to enter foo into the REPL to be evaluated, it would throw an unbound variable exception.

On 02/02/2015 11:31 AM, Peter Bex wrote:
On Mon, Feb 02, 2015 at 10:51:26AM -0700, Alexej Magura wrote:
Does Chicken have anything comparable to Common Lisp's /unintern/? I
thought that it might be under /##sys/, since other features present
in Common Lisp, but absent in Chicken are available under that
namespace, but it doesn't seem to be provided by that
module/namespace.
There's string->uninterned-symbol, which is even documented, right
below "gensym":
http://wiki.call-cc.org/man/4/Unit%20library#string-uninterned-symbol

If you have a symbol you want to unintern, you can get its string
and create an uninterned symbol from that:

(define unintern (o string->uninterned-symbol symbol->string))

(eq? (unintern 'foo) 'foo) => #f

Cheers,
Peter

_______________________________________________
Chicken-users mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to