Assignment/SETF macro

Brian Rice water at tunes.org
Fri Jan 27 12:10:20 PST 2006


I've added a macro `setTo: to macro.slate. See near the end of:
http://slate.tunes.org/repos/main/src/lib/macro.slate

Right now, all it does is expand some basic forms:

(x atSlotNamed: #foo) `setTo: 4. => x atSlotNamed: #foo put: 4.
(x at: 3) `setTo: 4. => x at: 3 put: 4.
(x at: 'key') `setTo: 4. => x at: 'key' put: 4.
x foo `setTo: 4. => x foo: 4.

It is aliased as an empty keyword `: and binary `:= as well.

Benefits: The only benefit of it is to be able to "identify"  
assignment idioms more easily in code, but that seems worthwhile. I  
suppose it's possible to use it for code-generation as well, to  
abstract over assignment types, but I don't have a use-case in that  
direction yet - perhaps if I extended the C Syntax types with the  
same selector...

Deficiencies: Type inference is not standardly used in Slate yet, so  
it can't infer whether or not something is an array or dictionary or  
even /has/ a (settable) #foo attribute as in the last case. This  
could happen in the future, though.

Ideas, suggestions, complaints? Thumbs up or down? Let me know. This  
was an easy addition, really.

NB: "SETF" refers to the "set field" macro in Common Lisp, which  
inspired this.

--
-Brian
http://tunes.org/~water/brice.vcf

-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 186 bytes
Desc: This is a digitally signed message part
Url : /archives/slate/attachments/20060127/009814eb/PGP.pgp


More information about the Slate mailing list