reduce number of primitive dip/curries generated by fry
parent
cbf2a2131f
commit
972a63630f
|
@ -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' )
|
||||
|
|
Loading…
Reference in New Issue