]> gitweb.factorcode.org Git - factor.git/blob - extra/vars/vars.factor
Fixing everything for mandatory stack effects
[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: kernel parser words namespaces sequences quotations ;
6
7 IN: vars
8
9 : define-var-getter ( word -- )
10     [ word-name ">" append create-in ] [ [ get ] curry ] bi
11     (( -- value )) define-declared ;
12
13 : define-var-setter ( word -- )
14     [ word-name ">" prepend create-in ] [ [ set ] curry ] bi
15     (( value -- )) define-declared ;
16
17 : define-var ( str -- )
18     create-in
19     [ define-symbol ]
20     [ define-var-getter ]
21     [ define-var-setter ] tri ;
22
23 : VAR: ! var
24     scan define-var ; parsing
25
26 : define-vars ( seq -- )
27     [ define-var ] each ;
28
29 : VARS: ! vars ...
30     ";" parse-tokens define-vars ; parsing