]> gitweb.factorcode.org Git - factor.git/blob - extra/vars/vars.factor
8c024ce7758db9444cb1f8164839062f992854f6
[factor.git] / extra / vars / vars.factor
1 ! Copyright (C) 2005, 2006 Eduardo Cavazos
2
3 ! Thanks to Mackenzie Straight for the idea
4
5 USING: compiler.units kernel parser words namespaces
6 sequences quotations ;
7
8 IN: vars
9
10 : define-var-symbol ( str -- ) create-in define-symbol ;
11
12 : define-var-getter ( str -- )
13 dup ">" append create-in swap in get lookup [ get ] curry define ;
14
15 : define-var-setter ( str -- )
16 ">" over append create-in swap in get lookup [ set ] curry define ;
17
18 : define-var ( str -- ) [
19 dup define-var-symbol dup define-var-getter define-var-setter
20 ] with-compilation-unit ;
21
22 : VAR: ! var
23     scan define-var ; parsing
24
25 : define-vars ( seq -- ) [ define-var ] each ;
26
27 : VARS: ! vars ...
28 ";" parse-tokens define-vars ; parsing