pt., 10 maj 2024 o 22:19 Per Bothner napisaƂ(a): > > > On 5/10/24 1:15 PM, Panicz Maciej Godek via Kawa wrote: > > Hi, > > > > I've noticed that when I call > > > > (future (eval '(define x 5))) > > > > then the variable x remains unbound after the execution > > - even though when I invoke (eval '(define x 5)), x gets bound to 5 as > > expected. > > This might work: > > (define x #f) > (future (eval '(set! x 5))) > Thanks, it does the trick for simple cases. I currently scan for the appearance of "define", then extract for the symbol and build a binding, and then evaluate `(set! ,symbol (let () ,expression ,symbol)) but if I wanted to handle a more general case (such as a begin form containing some definitions), I'd probably need to implement something closer to a full evaluator, which makes me wonder whether the above behavior (with variables not being bound from other threads) is actually desired?