namespaces parser effects.parser sequences words ;
IN: promises
-TUPLE: promise-state quot forced? value ;
+TUPLE: promise quot forced? value ;
-: promise ( quot -- promise ) f f \ promise-state boa ;
+: <promise> ( quot -- promise ) f f promise boa ;
: force ( promise -- value )
dup forced?>> [
value>> ;
: make-lazy-quot ( quot effect -- quot )
- in>> length '[ _ _ ncurry promise ] ;
+ in>> length '[ _ _ ncurry <promise> ] ;
SYNTAX: LAZY:
(:) [ make-lazy-quot ] [ 2nip ] 3bi define-declared ;