diff --git a/extra/rewrite-closures/rewrite-closures.factor b/extra/rewrite-closures/rewrite-closures.factor index 31b88eeaa4..198e1744bc 100644 --- a/extra/rewrite-closures/rewrite-closures.factor +++ b/extra/rewrite-closures/rewrite-closures.factor @@ -1,22 +1,19 @@ -USING: kernel parser math quotations namespaces sequences namespaces.lib - inference.transforms fry ; +USING: kernel parser math quotations namespaces sequences macros fry ; IN: rewrite-closures ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -! : set-parameters ( seq -- ) reverse [ set ] each ; +: [set-parameters] ( seq -- quot ) reverse [ [ set ] curry ] map concat ; -: [set-parameters] ( seq -- quot ) [ [ set ] curry ] map concat ; +MACRO: set-parameters ( seq -- quot ) [set-parameters] ; -: set-parameters ( seq -- ) [set-parameters] call ; - -\ set-parameters [ [set-parameters] ] 1 define-transform +! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! : parametric-quot ( parameters quot -- quot ) '[ , set-parameters , call ] ; -: scoped-quot ( quot -- quot ) [ with-scope ] curry ; +: scoped-quot ( quot -- quot ) '[ , with-scope ] ; : closed-quot ( quot -- quot ) namestack swap '[ namestack [ , set-namestack @ ] dip set-namestack ] ;