]> gitweb.factorcode.org Git - factor.git/commitdiff
reduce number of primitive dip/curries generated by fry
authorJoe Groff <arcata@gmail.com>
Sun, 8 Nov 2009 03:34:16 +0000 (21:34 -0600)
committerJoe Groff <arcata@gmail.com>
Sun, 8 Nov 2009 03:34:16 +0000 (21:34 -0600)
basis/fry/fry.factor

index abcba82205ad3e1e0c141abfcf746281a8d816c1..c2f0ddb125419a3061f188f7f8afa84bf7c01ef9 100644 (file)
@@ -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 <repetition> >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' )