]> gitweb.factorcode.org Git - factor.git/commitdiff
generalize stack effect of while, until, and produce
authorJoe Groff <arcata@gmail.com>
Sat, 6 Mar 2010 06:42:05 +0000 (22:42 -0800)
committerJoe Groff <arcata@gmail.com>
Sat, 6 Mar 2010 07:01:22 +0000 (23:01 -0800)
core/kernel/kernel.factor
core/sequences/sequences.factor

index ae8763e7f8166dd6bc0dbeca3c4fc2703b85b019..3a53eb91e2427acabf1ecab10362b16d94ca1404 100644 (file)
@@ -177,10 +177,10 @@ UNION: boolean POSTPONE: t POSTPONE: f ;
 : do ( pred body -- pred body )
     dup 2dip ; inline
 
-: while ( ... pred: ( ... -- ... ? ) body: ( ... -- ... ) -- ... )
+: while ( ..a pred: ( ..a -- ..b ? ) body: ( ..b -- ..a ) -- ..b )
     swap do compose [ loop ] curry when ; inline
 
-: until ( ... pred: ( ... -- ... ? ) body: ( ... -- ... ) -- )
+: until ( ..a pred: ( ..a -- ..b ? ) body: ( ..b -- ..a ) -- ..b )
     [ [ not ] compose ] dip while ; inline
 
 ! Object protocol
index cb8d2abedf82750ce225eaa236e9ef0311a8f8ef..314447febfac0ce5e7f5edf6516052c9a6a65e02 100644 (file)
@@ -513,10 +513,10 @@ PRIVATE>
 : collector ( quot -- quot' vec )
     V{ } collector-for ; inline
 
-: produce-as ( ... pred: ( ... -- ... ? ) quot: ( ... -- ... obj ) exemplar -- ... seq )
+: produce-as ( ..a pred: ( ..a -- ..b ? ) quot: ( ..b -- ..a obj ) exemplar -- ..b seq )
     dup [ collector-for [ while ] dip ] curry dip like ; inline
 
-: produce ( ... pred: ( ... -- ... ? ) quot: ( ... -- ... obj ) -- ... seq )
+: produce ( ..a pred: ( ..a -- ..b ? ) quot: ( ..b -- ..a obj ) -- ..b seq )
     { } produce-as ; inline
 
 : follow ( ... obj quot: ( ... prev -- ... result/f ) -- ... seq )