Macros as Multi-Stage Computations: Type-Safe, Generative ... - AMiner

11 downloads 90 Views 227KB Size Report
tion calls. In the second case, macros are usually used. * This work was ... This language, call- ...... be possible to
Macros as Multi-Stage Computations: Type-Safe, Generative, Binding Macros in MacroML 

Amr Sabry

Computer Science Department Indiana University

Computer Science Department Indiana University

Department of Computer Science Yale University

[email protected]

[email protected]

[email protected]

ABSTRACT  

  

!"$#%& '( )*'! +

,% - 

 

' ."0/

-12 & 3 4 & !,5!6 . 7! &8:9* 3(5;)=?& :!  !  & . "(/ZM"0,%c,  & &"R S,0 (5[, & 5  !DP !#\# . 4)`

P56 2 ># ! 5#& &8m‡`

 . P  $ -R#a! 5#& > 2 !R &  " ;1,0 &  #bP 74NOP  

 &8† !+;1 N\&5 M"€ !Q!!#M"h5] > 

P  D& (0 G!]- 7 Inlining P9*^&&hNO !'( (0P&7c >#!?  S!]& ./ & !,%I&

 . P  D5 2 &  "m  l- m j c&&n jI )`&/T ,% &i !;'NO >&!!P- 57L!  !P ' P#/_ 10,   5 ! &8 sTm,- &P5G:): m &&P0 

fG3D#%&&

 ;  - 4M)` '0¥£  &Q*?(0 ` !Nf& !- &&‹ T8 “:{&Ï É0wOzB!wO|(¹!G !2uM&!!P- 7^[&& 47 ;[ !c‘0G v  KQ &0 D& - 8 ? > - < ? > - H ?  8 ¯ GW U J LNMPOQLSRmG - 8 - < - H U  8 W„Y G°  < ’ A ” H  -@? ’ A ” > -@?   8 ‡*!L)` NV ! & +,,- 5 !U b#%0

Hi .G--@,?  (-ŒP- &Ž7 G6¡ ,  £ ¡ ¡b,  £ ¡ ¡ž 9*  !,%  

>  ! 10,0 &  #:5R‡*¤`òn !*‡*¤`„p{;À@ z É@!}~wZE|  !Q & &G%#P035 3 10,   5#UI2  gj#("2!  7$   ; -@? —G -  - B¡ ,£ ¡ ¡;8 “:{;|%@x'wO|Q¹ W2·n6D&"a#% !#(0 !P $ ] 10,%  &G`D  &l7!P!7!R5?  2;gj 4 P§$&&Q[NV ![, -(l07$ J&  & 3 

,%; 

e8 Ÿ PJ  !Q & \NO !$!; Qgn S &0NO  &m#Q"a 2T",%2 ." .  k¢ ? ª  ¢  ¡ G

- W .¬n032 - W .B0\¯ 8 - 4< W¯ - 8 W . 8 °Z.=, -(5& JNV !   !a!#%

P0S R  &R ./ -›&,0 /   #%L c#0 ;Ñ#5&L 7!P{;|}~8µsTD & D#07

!N3 RNO  ¼ < . 8h9* $ 0(

2 gj0&   #%D!#% -R Z!20 iD#%& )[¡;8   · 8 !7N J &2& P/ Å 3&7 Pl-K 10& P 

eWb9*J 10,!  !5   : S J! .)*   ·< NMW

O_ Y  ·8 ’ A ”  ·
-@? ª  - ƒ  ¡  - ¡ WZY c;  —hG  _¡K _¡4  >k¢ c ¢  ª ¡¡¡ A  ~!@GfG &!]ª > ª  ƒ    >k¢ c ¢  ª  ¡X -  ¡ A  ~!&&e· &? -@?,%J· ):-  D#!? ?  ¡ O_ Y  >]ª > ª  Š;    >k¢ ? Q ¢  ª  ¡X -  ¡ A  ~!e· ?-;?  · > ¡ O_ Y  >]ª > ª  ŠNQP C ª  A  ~!·&? &e- &? · ,%J- ): D#- !?  ¡ O_ Y  >]ª > ª  m    ª ¡ A  O P·¡ ? - ? · - >]ª · ? > -@? ª ·  - m   -  ª ¡ ):; b \;1,%   ^  P3 !NH  $ 10, 

e8

4.3 X[ `{'{;±±E±; Æ ÞBÑxÐ Ð:ÛeÔ49*Si .K,-K K#Q"6ge& !,%   &8 6. Ÿ PY!RELATED ,, ;\NV !; WORK 5(7b T",% ."0 . &)b

 4i .`0&& !,' * 5 

RR$&  &Q 5!"RP(T"0,%U ;/  70G¦6 &6 D& &

,L>T",%U ."0 . & .J): ]  PQT",%&$   7G()`K 10,%&  * 5 ?A@0BC&DME3?bBH¯XZBU(DFN:DMH 9 B?@E0x.P5K‰=mN5DFP5HNP~’1XŒw 9 =qÊ Ò(Ò • [FÓ<  € _61+ /€_ — 23+ /K*ó \\\(^&_m©W4ŸZ   _½cm4 _6.½c½Ž½Ô %20  ®0 € ./$ac 5_3%%Z4kó*\|5f0e{e34 ò *ó |Pô  ÐB mù ƪ ¥3 &!Å  mû  ¬ ~ýZû Í0ú ÿ È€ Õö LkmFj mÿ S˜&%3j ÿC mû  È &ý ×½Ö%  *(…S+ : Ø5!2 +   ,.Z+ 4'(6.  + ILKTBU(KTV?:?WDFH0UYXZVH0U(EV5U(P5CvSw&?A@O P*?zP5Hx1V(x}D}BHC ¨ XZBU(DFN5CQVHu ILKTBU(KTV?:C~’}I XŒw XŒIzÊ Ò(à •~[—*ó \\£(^_m®4ÄW4®€¹S *   &z3 `4ƒS      +  _½Ž54 _0'( +14\]e:  XZP&N*x1E3KTP  Bx.P5C‰DMH

9 B?A@E3x.P*KQ=mN*D}P*HN&P _®0%     ,1ώ  +… _0%%Z4e£\5f0e(g]34 Ð mƪ ¥3Å m¬ È€Õ kmj m˜&j mÈ ‡T-3   ,1   ‰+ /0  F  SW2+   ,.+ '( *+% …+  Ø*! Z46. ISP*KC1@3PN5x1DMÙP*C‰B R)=>C&x.P*? w&H5RBK?zVx1DFN5C [ *\\d(^&_mÄW4ºŒÚTÛ   *_`4º  5/(_J6&4ÏW4 aˆ    m_½c*4 _0'( +14 *] )  XZP&N*x1E3KTP  Bx.P5C‰DMH 9 B?A@E3x.P*K =mN5DFP5HNP _®€%     T,1Ïc  +… _%%Z4ed &f0e(ge34 Ð mƪ ¥3Å m¬ È€Õ kmj m˜&j mÈ #J23 ~!  s%3    &     &!  F  L:2+   ,.+ '( +m % …+  Ø*! m4 XŒw=I»V(Hu=>?tBO D}N 9 B?A@E3x.Vx1DFBH ³€”_eY[ *\\(g^&_ *|5f *£]34 Ð m  Z¤ mÁ ¾È j0˜ mÜ ° #»%  …+Œ '+ 2!  F  2(./3% ¯+…:-s*+ *23+ 254mÝ BE3KHVOB R  E3HN*x1DFB(HVO ILKTBU(KTV?:?WDFH0U ³_ z[ *\\ 5^_e &f0d\34 :n ¿€Â ®0 ~€  *+?A@0BC&DME3?bBH XZB&UD}NWDFH 9 B?A@E3x.P*K)=mN5DFP5HN&P’1XŒw 9 =qÊ Ò(Ò •~[FÓ<  ( _61+ /(_ — 2+ / *\\\(^&_m©W4ŸŒ   _½ŽZ4 _6.½Ž½c½Þ %23 * ®0 € ./JaŽ  *4 zÈ j3˜ mÜ ° ?@3BC&DME3?‘BHJILKTBU(KTV?:?:DMH0U¦’}· =“ŽI •~[ *\\\(^&_ '( +14 *£(gd:  XZP&N*x1E3KTP  Bx.P5C‰DMH 9 B(?@E3x.P*KQ=mN*D}P*HN&P _ ®0%     ,1ώ  +… _3%%Z4 *\|5f0e{(g04 ¾ m˜ ° 6.% 5'(  €  Js+…Ø/Y ( ̀5" #A$ % * ! +Œ‚   T/YF  L*+ + ,.-€/€,.  Z46.é9 B(H5RP5KTP*HN&P åLPN&BK uJBRIQ“ŽIcXçҀҀv pZr PWŠ3ê!x r$7:9Œ; =wŽI X 7)) =w 7:9Sp

ò óhSô Bù û ýZûúÿ ö ÿ ÿCû ý ©ó kó ó ó ó ò *ó £Pô Bù û ýZûúÿ ö ÿ ÿCû ý —ó :óó ó ò *ó dPô àø ‘úö Cû àý mýûúÿ øÿ Sû Xý Tý kó —ó ó ó ò 5ó gNô Bø ‘úÿÿCûþFý ó ò *ó ]Pô øÿ Sû Xý TýZû àø ‘úö Cû Bý mýZûúÿ ø kû 'ý ]ó ò *ó \Pô Bø  úCù û Vý öeû 'ýZû Cö÷ ‘úÿCû Tý }ýû ùSù ÷ ÿCûkþFýZûxúÿ kó ó ó ó xó ò e{Pô þFý V÷ Sû ý Žýû kú ÿ ö :û ýZû]þ ÷ öeû 'ýZûxúÿ ÷ ù Sû \ó ó ]ó óó ò e óôTþE÷„ùSù öeû Tý mó ò eePôTþE÷ ùSù û ý àý ©ó ó ó ò e|PôTþø x÷û 'ý kó —ó ó ò ehSôTþø x÷û 'ý ©ó ò e£PôTþø x÷û 'ý —ó ]ó ò edPôTVþý ø x÷û 'ýZû Cú úCû ýZû ÿú÷ úCû]ü:ý 'ý õXýZûxúÿ úö Cû ©ó kó kó ò e(gNôTþøöúÿCûõXýZûúÿ úÿ Sû Tý



=>?A@0B(CDFE0?GBHJILKDMHN5D @O P*CQBRSILKTBU(KTV?:?WDFH0UYXZVH0U(EV5U(P5C ¨ =mVH 7 Hx1B(HDFB!¨ p Py(VC [} ¹²–c  ¼_S–W_ — Z4 *\\\(^&_#L`_ %%Z4h(|5f0£d34 :Ü j ˜ m« ¦Ü j ˜ mn ¬ Óq¹q ,1+ '( +Œ ~€  3 * € Q    &!  Z4LpZr P&BK P*x1DFN&VO 9 B?@E0x.P5K)=mN*D}P*HN&P:Ã0ê _ [ *\]](^&_£\5f *||34 ë)Å ˜ Å Œ¤ IqE3KTP5O >  E0HN5x1DFBHVOmìsVx.Vz=x1KEN*x1E3KTP5C 4ac‚Ä ‚   5_®0‚ 0 +Z Žq %323  A®0  (_L    Q`8 + +  æ '(    ./(_ *\\d34 ë ± ° mo Z¬ Âq˜&j mÈ m° ¶  ÓL‚ Ï)ŸŒ6T®0aí'(   î $%  ‚  ‰* %3 + * *4 XDMC1@¦VHu~=>?ztBO DFN 9 B?@E0x.Vx1DFB(H¾ï _ 5ðe$[ *\\£(^_ &f *]e34 zÌA    ¯©A 2! s6.3   23 sÓS &‚3 *+YVHu 7 @(@O DFN&Vx1D}BHC 4aނĻ ‚  *_ÌA *  8©A &2! Q6.T  23 W  ®0 *3* s$Ó< &‚ +  /(_ *\\\34#' +…-+ )F   | .4 :› œ  #» 2$  2  8 ~( qF  S23€./0% *¯Lºq :2+   ,.   ) %23!  Z4ÌA 5_0‚3 Q ‚   /Y `8 `8Ÿ   3,1  '0…+146. ILKTB5NP&P&uDFH0UC:B R‰x r P¯¡8BK¢C r B@žBHJISVKx1DFVO ·LÙVO EVx1DFB(H¾VHu~=mP*?zVHx1DFN5C  äVCP&u:ILKTBU(KTV? ; V(HD @O Vx1DFBH ’}Ic·ŽI ;~•~[}º   Z_e{{{(^_#Aq`bac   54 :› œ  Ziqj …˜˜ š„™ š œj  › `82+  ,1   ‰%      "