Re: global vars and #:declarative? (was [critical bug] The set! doesn't work in indirect reference)

Linus Björnstam <[email protected]>
Newsgroups gmane.lisp.guile.user
Message-ID <[email protected]>
Den 2024-09-22 kl. 04:34, skrev Nala Ginrut:
> @Linus!
> I think it's similar to a getter/setter, but I think making it a 
> function will be safer.


I think a box is a good idea, since that is more or less what happens 
behind the scenes when you start mutating values outside contexts where 
automatic unboxing occurs. You will also not have to deal with the 
performance penalty of the dynamic environment, nor any unexpected 
thread things (apart from threads being able to mutate the value at the 
same time). It is what you would have gotten if guile had not introduced 
declarative modules.

Guile has both regular boxes (srfi 111?) and atomic boxes.

My suggestion about identifier macros means you can make the boxing 
primitives invisible to the user. Ie using (+ the-var 5) turns into (+ 
(unbox the-var) 5) and (set! the-var 12)=> (set-box! the-var 12). I have 
done some voodoo using make-variable-transformer, but I believe the 
shorthand _identifier-syntax_ could be what you are looking for.

Best regards
Linus
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.