From 17df15280e6c32fae6184cb5fdd1ce1fdbc8facc Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Fri, 5 Mar 2010 22:42:05 -0800 Subject: [PATCH] generalize stack effect of while, until, and produce --- core/kernel/kernel.factor | 4 ++-- core/sequences/sequences.factor | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/kernel/kernel.factor b/core/kernel/kernel.factor index ae8763e7f8..3a53eb91e2 100644 --- a/core/kernel/kernel.factor +++ b/core/kernel/kernel.factor @@ -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 diff --git a/core/sequences/sequences.factor b/core/sequences/sequences.factor index cb8d2abedf..314447febf 100644 --- a/core/sequences/sequences.factor +++ b/core/sequences/sequences.factor @@ -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 )