factor/extra/vars/vars.factor

31 lines
709 B
Factor

! Copyright (C) 2005, 2006 Eduardo Cavazos
! Thanks to Mackenzie Straight for the idea
USING: accessors kernel parser lexer words namespaces sequences quotations ;
IN: vars
: define-var-getter ( word -- )
[ name>> ">" append create-in ] [ [ get ] curry ] bi
(( -- value )) define-declared ;
: define-var-setter ( word -- )
[ name>> ">" prepend create-in ] [ [ set ] curry ] bi
(( value -- )) define-declared ;
: define-var ( str -- )
create-in
[ define-symbol ]
[ define-var-getter ]
[ define-var-setter ] tri ;
: VAR: ! var
scan define-var ; parsing
: define-vars ( seq -- )
[ define-var ] each ;
: VARS: ! vars ...
";" parse-tokens define-vars ; parsing