lazy-lists: add LAZY: word
parent
b66cee04b3
commit
0c9bd24059
|
@ -0,0 +1,20 @@
|
|||
! Copyright (C) 2004 Chris Double.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
!
|
||||
USING: kernel sequences words inference namespaces math parser ;
|
||||
IN: lazy-lists
|
||||
|
||||
: stack-effect-in ( quot word -- n )
|
||||
stack-effect dup [
|
||||
nip effect-in length
|
||||
] [
|
||||
drop infer first
|
||||
] if ;
|
||||
|
||||
: make-lazy-quot ( word quot -- quot )
|
||||
[
|
||||
dup , swap stack-effect-in [ \ curry , ] times \ <promise> ,
|
||||
] [ ] make ;
|
||||
|
||||
: LAZY: ( -- object object object )
|
||||
CREATE dup reset-generic [ dupd make-lazy-quot define-compound ] f ; parsing
|
|
@ -0,0 +1,13 @@
|
|||
! Copyright (C) 2006 Chris Double.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
|
||||
USING: help lazy-lists ;
|
||||
|
||||
HELP: LAZY:
|
||||
{ $syntax "LAZY: word definition... ;" }
|
||||
{ $values { "word" "a new word to define" } { "definition" "a word definition" } }
|
||||
{ $description "Creates a lazy word in the current vocabulary. When executed the word will return a " { $link <promise> } " that when forced, executes the word definition. Any values on the stack that are required by the word definition are captured along with the promise." }
|
||||
{ $examples
|
||||
{ $example "LAZY: my-add ( a b -- c ) + ;\n1 2 my-add force ." }
|
||||
}
|
||||
{ $see-also force promise-with promise-with2 } ;
|
|
@ -4,6 +4,8 @@
|
|||
PROVIDE: contrib/lazy-lists {
|
||||
"lists.factor"
|
||||
"lists.facts"
|
||||
"lazy.factor"
|
||||
"lazy.facts"
|
||||
"lazy-io.factor"
|
||||
"lazy-io.facts"
|
||||
"examples.factor"
|
||||
|
|
Loading…
Reference in New Issue