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