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