From 972a63630f1616691e9aef665778a2bcd2cde1c5 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Sat, 7 Nov 2009 21:34:16 -0600 Subject: [PATCH] reduce number of primitive dip/curries generated by fry --- basis/fry/fry.factor | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/basis/fry/fry.factor b/basis/fry/fry.factor index abcba82205..c2f0ddb125 100644 --- a/basis/fry/fry.factor +++ b/basis/fry/fry.factor @@ -29,22 +29,25 @@ PREDICATE: fried-callable < callable count-inputs 0 > ; INSTANCE: fried-callable fried -: [ncurry] ( n -- quot ) +: (ncurry) ( quot n -- quot ) { - { 0 [ [ ] ] } - { 1 [ [ curry ] ] } - { 2 [ [ 2curry ] ] } - { 3 [ [ 3curry ] ] } - [ \ curry >quotation ] + { 0 [ ] } + { 1 [ \ curry suffix! ] } + { 2 [ \ 2curry suffix! ] } + { 3 [ \ 3curry suffix! ] } + [ [ \ 3curry suffix! ] dip 3 - (ncurry) ] } case ; +: [ncurry] ( n -- quot ) + [ V{ } clone ] dip (ncurry) >quotation ; + : [ndip] ( quot n -- quot' ) { { 0 [ \ call [ ] 2sequence ] } { 1 [ \ dip [ ] 2sequence ] } { 2 [ \ 2dip [ ] 2sequence ] } { 3 [ \ 3dip [ ] 2sequence ] } - [ [ \ dip [ ] 2sequence ] times ] + [ [ \ 3dip [ ] 2sequence ] dip 3 - [ndip] ] } case ; : (make-curry) ( tail quot -- quot' )