diff --git a/contrib/lazy-lists/lazy-io.factor b/contrib/lazy-lists/lazy-io.factor index b24e0424a9..967cfc7b6b 100644 --- a/contrib/lazy-lists/lazy-io.factor +++ b/contrib/lazy-lists/lazy-io.factor @@ -31,4 +31,34 @@ M: lazy-contents cdr ( lazy-contents -- cdr ) ] if ; M: lazy-contents nil? ( lazy-contents -- bool ) - car not ; \ No newline at end of file + car not ; + +TUPLE: lazy-lines stream car cdr ; + +: llines ( stream -- result ) + f f ; + +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 ; +