2006-06-28 06:52:10 -04:00
|
|
|
! Copyright (C) 2005, 2006 Eduardo Cavazos
|
|
|
|
|
|
|
|
! Thanks to Mackenzie Straight for the idea
|
|
|
|
|
|
|
|
USING: kernel parser words namespaces sequences ;
|
|
|
|
|
|
|
|
IN: vars
|
|
|
|
|
|
|
|
: define-var-symbol ( str -- ) create-in define-symbol ;
|
|
|
|
|
|
|
|
: define-var-getter ( str -- )
|
|
|
|
dup ">" append create-in swap in get lookup [ get ] curry define-compound ;
|
|
|
|
|
|
|
|
: define-var-setter ( str -- )
|
|
|
|
">" over append create-in swap in get lookup [ set ] curry define-compound ;
|
|
|
|
|
|
|
|
: define-var ( str -- )
|
|
|
|
dup define-var-symbol dup define-var-getter define-var-setter ;
|
|
|
|
|
|
|
|
: VAR: ( variable -- ) scan define-var ; parsing
|
|
|
|
|
|
|
|
: define-vars ( seq -- ) [ define-var ] each ;
|
|
|
|
|
2006-08-29 18:31:50 -04:00
|
|
|
: VARS: ! vars ...
|
2006-06-28 06:52:10 -04:00
|
|
|
string-mode on [ string-mode off define-vars ] f ; parsing
|
|
|
|
|
2006-08-29 18:31:50 -04:00
|
|
|
: let ( vars body -- result )
|
|
|
|
[ >r <reversed> [ set ] each r> call ] with-scope ;
|
2006-07-01 12:46:08 -04:00
|
|
|
|
2006-09-06 17:01:38 -04:00
|
|
|
PROVIDE: contrib/vars ;
|