From f8ec85fd061d474b225c3837734091b8732c0609 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Fri, 14 Oct 2011 10:44:42 -0700 Subject: [PATCH] kernel: higher-order effects for *keep --- core/kernel/kernel.factor | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/core/kernel/kernel.factor b/core/kernel/kernel.factor index 7cf7005350..307445c9f4 100644 --- a/core/kernel/kernel.factor +++ b/core/kernel/kernel.factor @@ -64,11 +64,14 @@ DEFER: if : 4dip ( w x y z quot -- w x y z ) swap [ 3dip ] dip ; inline ! Keepers -: keep ( x quot -- x ) over [ call ] dip ; inline +: keep ( ..a x quot: ( ..a x -- ..b ) -- ..b x ) + over [ call ] dip ; inline -: 2keep ( x y quot -- x y ) [ 2dup ] dip 2dip ; inline +: 2keep ( ..a x y quot: ( ..a x y -- ..b ) -- ..b x y ) + [ 2dup ] dip 2dip ; inline -: 3keep ( x y z quot -- x y z ) [ 3dup ] dip 3dip ; inline +: 3keep ( ..a x y z quot: ( ..a x y z -- ..b ) -- ..b x y z ) + [ 3dup ] dip 3dip ; inline ! Cleavers : bi ( x p q -- )