1 ! Copyright (C) 2004, 2006 Chris Double, Matthew Willis.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors effects.parser generalizations kernel
7 TUPLE: promise quot forced? value ;
9 : <promise> ( quot -- promise ) f f promise boa ;
11 : force ( promise -- value )
13 dup quot>> call( -- value ) >>value
17 : make-lazy-quot ( quot effect -- quot )
18 in>> length '[ _ _ ncurry <promise> ] ;
21 (:) [ make-lazy-quot ] keep define-declared ;