|
From: | Alexej Magura |
Subject: | Re: [Chicken-users] how to unintern a symbol |
Date: | Mon, 02 Feb 2015 11:55:12 -0700 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0 |
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 |
[Prev in Thread] | Current Thread | [Next in Thread] |