lazy-lists: added llines for lazy lines from files

darcs
chris.double 2006-09-18 02:50:24 +00:00
parent 00305bfd15
commit 3ea3b26ce0
1 changed files with 31 additions and 1 deletions

View File

@ -32,3 +32,33 @@ M: lazy-contents cdr ( lazy-contents -- cdr )
M: lazy-contents nil? ( lazy-contents -- bool ) M: lazy-contents nil? ( lazy-contents -- bool )
car not ; car not ;
TUPLE: lazy-lines stream car cdr ;
: llines ( stream -- result )
f f <lazy-lines> ;
M: lazy-lines car ( lazy-lines -- car )
dup lazy-lines-car dup [
nip
] [
drop dup lazy-lines-stream stream-readln
swap dupd set-lazy-lines-car
] if ;
M: lazy-lines cdr ( lazy-lines -- cdr )
dup lazy-lines-cdr dup [
nip
] [
drop dup
[ lazy-lines-stream ] keep
car [
llines [ swap set-lazy-lines-cdr ] keep
] [
2drop nil
] if
] if ;
M: lazy-lines nil? ( lazy-lines -- bool )
car not ;