factor/extra/rewrite-closures/rewrite-closures.factor

27 lines
908 B
Factor
Raw Normal View History

2007-09-20 18:09:08 -04:00
USING: kernel parser math quotations namespaces sequences macros fry ;
2007-09-20 18:09:08 -04:00
IN: rewrite-closures
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2008-07-01 10:31:52 -04:00
: [set-parameters] ( seq -- quot ) reverse [ [ set ] curry ] map concat ;
2007-09-20 18:09:08 -04:00
2008-07-01 10:31:52 -04:00
MACRO: set-parameters ( seq -- quot ) [set-parameters] ;
2007-09-20 18:09:08 -04:00
2008-07-01 10:31:52 -04:00
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2007-09-20 18:09:08 -04:00
: parametric-quot ( parameters quot -- quot ) '[ _ set-parameters _ call ] ;
: scoped-quot ( quot -- quot ) '[ _ with-scope ] ;
2007-09-20 18:09:08 -04:00
: closed-quot ( quot -- quot )
namestack swap '[ namestack [ _ set-namestack @ ] dip set-namestack ] ;
2007-09-20 18:09:08 -04:00
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
: lambda ( parameters quot -- quot ) parametric-quot scoped-quot closed-quot ;
2007-09-20 18:09:08 -04:00
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
: C[ \ ] [ >quotation ] parse-literal \ closed-quot parsed ; parsing