]> gitweb.factorcode.org Git - factor.git/commitdiff
lazy-lists: fix laziness of lappend
authorchris.double <chris.double@double.co.nz>
Fri, 6 Oct 2006 03:29:50 +0000 (03:29 +0000)
committerchris.double <chris.double@double.co.nz>
Fri, 6 Oct 2006 03:29:50 +0000 (03:29 +0000)
lappend would evaluate the car of the second list all the time

contrib/lazy-lists/lists.factor

index 99bc70db8e426fbe570f5ac9cc0db7dd17bdecb9..4cc9073f302df4bdfaa47d954f2afea5df50d1b9 100644 (file)
@@ -281,9 +281,7 @@ TUPLE: lazy-append list1 list2 ;
 
 : lappend ( list1 list2 -- result )
   {
-    { [ over nil? over nil? and ] [ 2drop nil ] }
     { [ over nil? ] [ nip ] }
-    { [ dup nil? ] [ drop ] }
     { [ t ] [ <lazy-append> ] }
   } cond ;
 
@@ -296,9 +294,9 @@ M: lazy-append cdr ( lazy-append -- cdr )
 
 M: lazy-append nil? ( lazy-append -- bool )
   dup lazy-append-list1 nil? [
-    drop t 
+    lazy-append-list2 nil?     
   ] [
-    lazy-append-list2 nil? 
+    drop f
   ] if ;
 
 M: lazy-append list? ( object -- bool )