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\&5M" !Q!!#M"h5]>
P D& (0 G!]-7 Inlining P9*^&&hNO !'( (0P&7c>#!? S!]& ./ & !,%I&
.P D5 2& "m l-m jc&&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 ;[!c0G v KQ&0 D& - 8 ? > - < ? > - H ? 8 ¯ GW U J LNMPOQLSRmG - 8 - < - H U 8 WY 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"a2T",%2 ." . k¢ ? ª ¢ ¡ G
- W .¬n032 - W .B0\¯ 8 - 4< W¯ - 8 W . 8 °Z.=, -(5& JNV ! !a!#%
P0SR&R ./ -&,0 / #%Lc#0 ;Ñ#5&L7!P{;|}~8µsTD& D#07
!N3RNO ¼ < . 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 : SJ! .)* ·< 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 OP·¡ ? - ? · - >]ª · ? > -@? ª · - 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(7bT",% ."0 .&)b
4i .`0&& !,'* 5
RR$& &Q5!"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~1Xw 9 =qÊ Ò(Ò [FÓ< _61+ /_ 23+ /K*ó \\\(^&_m©W4Z _½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 Xw XIzÊ Ò(Ã ~[*ó \\£(^_m®4ÄW4®¹S * &z3 `4S + _½54 _0'( +14\]e: XZP&N*x1E3KTP Bx.P5CDMH
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*CB 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.P5CDMH 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 Xw=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&P1Xw 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.P5CDMH 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 uJBRIQIcXçÒÒv pZr PW3ê!x r$7:9; =wI 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ý
kó
=>?A@0B(CDFE0?GBHJILKDMHN5D @O P*CQBRSILKTBU(KTV?:?WDFH0UYXZVH0U(EV5U(P5C ¨ =mVH 7 Hx1B(HDFB!¨ p Py(VC [} ¹²c ¼_SW_ 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 ¯©A2! 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ÌA5_03 Q /Y `8 `8 3,1 '0
+146. ILKTB5NP&P&uDFH0UC:B Rx 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 % "