Adrien - in addition to what you suggested he wants to define something in case it's unbound.
What about, based on your macro
(define-macro (define/only-if-unbound var-name value) (if (not (symbol? var-name)) (error "Symbol expected")) `(define ,var-name (with-exception-catcher (lambda (e) ,value) (lambda () ,var-name))))
(define xyz 1) (define/only-if-unbound xyz 2) xyz
1
(define/only-if-unbound xyz2 123) (define/only-if-unbound xyz2 456) xyz2
123
Only use this kind of coding strategy if you have a really good reason to.
Mikael
2011/5/9 Adrien Piérard pierarda@iro.umontreal.ca
What about this?
(define-macro (bound? x) `(with-exception-handler (lambda (e) #f) (lambda () (and ,x #t))))
(pp (bound? x)) (let ((y 3)) (pp (bound? y)))
Cheers,
P!
2011/5/9 William James w_a_x_man@yahoo.com:
How do you check to see if a symbol is already bound? To be used in this fashion:
(if (bound? x) (set! x 22) (define x 22)) _______________________________________________ Gambit-list mailing list Gambit-list@iro.umontreal.ca https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list
-- Français, English, 日本語, 한국어 _______________________________________________ Gambit-list mailing list Gambit-list@iro.umontreal.ca https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list