$ od -c -N 50000 [eris]<LispCore>CML>DOC>iclp.tedit!1 0000000 X e r o x C o m m o n L i s 0000020 p \r A D e v e l o p m e n t 0000040 P l a n \r D a t e : \t 2 1 - J a 0000060 n - 8 6 9 : 5 2 p m \r A u t h 0000100 o r s : \t R o n F i s c h e r 0000120 , B i l l v a n M e l l e , 0000140 S t e v e P u r c e l l , 0000160 J o h n S y b a l s k y , L 0000200 a r r y M a s i n t e r , a 0000220 n d B e a u S h e i l \r I n 0000240 t r o d u c t i o n \r T h i s 0000260 d o c u m e n t p r e s e n t 0000300 s a p l a n t o d e v e 0000320 l o p a v e r s i o n o f 0000340 C o m m o n L i s p f o r 0000360 t h e X e r o x 1 1 0 0 0000400 s e r i e s o f m a c h i n 0000420 e s ( i . e . , p r i n c i 0000440 p a l l y f o r t h e 1 1 0000460 8 6 , b u t a l s o u s a 0000500 b l e o n t h e 1 1 0 8 , 0000520 1 1 3 2 o r a n y m a c 0000540 h i n e o f t h a t b a s 0000560 i c a r c h i t e c t u r e ) 0000600 . T h e k e y e l e m e 0000620 n t o f t h i s p l a n 0000640 i s t o i m p l e m e n t 0000660 C o m m o n L i s p a s a 0000700 n i n t e g r a t e d e x t 0000720 e n s i o n o f t h e p r 0000740 e s e n t I n t e r l i s p 0000760 b a s e d s o f t w a r e , 0001000 b y e x t e n d i n g t h e 0001020 I n t e r l i s p k e r n e 0001040 l s o f t w a r e t o p r 0001060 o v i d e s u p p o r t f o 0001100 r C o m m o n L i s p , i 0001120 n a d d i t i o n t o I n 0001140 t e r l i s p , a n d t h e 0001160 n p o r t i n g a s i g n 0001200 i f i c a n t f r a c t i o n 0001220 o f s o m e e x i s t i n 0001240 g , a v a i l a b l e i m p 0001260 l e m e n t a t i o n o f C 0001300 o m m o n L i s p , s u c h 0001320 a s S p i c e L i s p , 0001340 o n t o t h i s e x t e n d 0001360 e d k e r n e l . T h e 0001400 r e s u l t i n g i n t e g r 0001420 a t e d s y s t e m w o u l 0001440 d p r o v i d e a s m o o 0001460 t h , c o h e r e n t t r a 0001500 n s i t i o n p a t h f o r 0001520 b o t h o u r p r e s e n 0001540 t c u s t o m e r s a n d 0001560 X e r o x ' s i n t e r n a l 0001600 c o d e a s s e t s , b o 0001620 t h w i t h i n a n d o u 0001640 t s i d e o f X A I S ( e 0001660 . g . , i n P A R C / I S L 0001700 ) . T h i s d o c u m e n 0001720 t f o c u s e s o n t h e 0001740 b a s i c e n g i n e e r i 0001760 n g a n d d e v e l o p m e 0002000 n t t h a t i s r e q u i 0002020 r e d . I t d o e s n o 0002040 t c o v e r i s s u e s s 0002060 u c h a s d o c u m e n t a 0002100 t i o n , t r a i n i n g o 0002120 r s u p p o r t , w h i c h 0002140 w o u l d b e e s s e n t 0002160 i a l l y t h e s a m e f 0002200 o r a n y s u c h p r o d 0002220 u c t . \r 1 . R e q u i r e 0002240 m e n t s \r T h i s p l a n 0002260 w a s r e q u i r e d t o 0002300 s a t i s f y t h e f o l l 0002320 o w i n g f i v e r e q u i 0002340 r e m e n t s . \r 1 . T h e 0002360 i m p l e m e n t a t i o n 0002400 m u s t b e c o m p l e t e 0002420 e n o u g h t o b e r e 0002440 l e a s e d t o b e t a t 0002460 e s t n o l a t e r t h a 0002500 n A u g u s t 1 , 1 9 8 6 0002520 . T h e m o t i v a t i o 0002540 n f o r t h i s i s t h 0002560 a t t h e p r o d u c t m 0002600 u s t b e i n c u s t o m 0002620 e r s ' h a n d s b y A A 0002640 A I 1 9 8 6 , i n o r d e 0002660 r t o d e l i v e r o n 0002700 o u r p r o m i s e s f r o 0002720 m I J C A I 1 9 8 5 . \r 2 . 0002740 T h e p r o d u c t m u 0002760 s t b e a s c o m p l e t 0003000 e a c o v e r a g e o f 0003020 t h e C o m m o n L i s p 0003040 l a n g u a g e a s p o s s 0003060 i b l e . I n p a r t i c 0003100 u l a r , i t m u s t b e 0003120 a s c o m p l e t e a n 0003140 i m p l e m e n t a t i o n o 0003160 f C o m m o n L i s p a s 0003200 a n y o f o u r c o m p 0003220 e t i t o r s . I t m u s 0003240 t s u p p o r t e a s y i 0003260 m p o r t i n g o f " v a n 0003300 i l l a " C o m m o n L i s 0003320 p c o d e , a n d m u s t 0003340 b e m i s s i n g n o n e 0003360 o f t h e l a n g u a g e 0003400 ' s " m a j o r f e a t u r 0003420 e s " ( i n p a r t i c u l 0003440 a r , l e x i c a l s c o p 0003460 i n g , m u l t i p l e v a 0003500 l u e s , p a c k a g e s , 0003520 l a m b d a l i s t s a n d 0003540 C o m m o n L i s p s t y 0003560 l e e r r o r s a n d m a 0003600 c r o s ) . T h e c o m p l 0003620 e t e n e s s b e n c h m a r 0003640 k f o r t h i s p r o d u 0003660 c t i s c o n s i d e r e d 0003700 t o b e L u c i d C o m 0003720 m o n L i s p a s i m p l 0003740 e m e n t e d f o r t h e 0003760 S u n . \r 3 . I t m u s t 0004000 s u p p o r t u n r e s t r 0004020 i c t e d i n t e r m i x i n 0004040 g o f C o m m o n L i s p 0004060 c o d e a n d d a t a o 0004100 b j e c t s w i t h t h o s 0004120 e o f t h e e x i s t i n 0004140 g I n t e r l i s p - D s y 0004160 s t e m , s o t h a t f a 0004200 c i l i t i e s i m p l e m e 0004220 n t e d i n e i t h e r l 0004240 a n g u a g e a r e a c c e 0004260 s s i b l e t o c o d e d 0004300 e v e l o p e d i n t h e 0004320 o t h e r . T h e m o t i 0004340 v a t i o n f o r t h i s 0004360 r e q u i r e m e n t i s t 0004400 o a l l o w t h e n e w 0004420 C o m m o n L i s p s y s t 0004440 e m t o m a k e u s e o 0004460 f t h e v a s t r a n g e 0004500 o f f a c i l i t i e s a 0004520 l r e a d y a v a i l a b l e 0004540 i n I n t e r l i s p - D 0004560 a n d a l s o t o f a c i 0004600 l i t a t e t h e c o n v e 0004620 r s i o n t o C o m m o n 0004640 L i s p o f n e w c o d e 0004660 d e v e l o p e d b o t h 0004700 b y X e r o x a n d i t s 0004720 c u s t o m e r s . F o r 0004740 e x a m p l e , i t m u s 0004760 t b e p o s s i b l e t o 0005000 i m p l e m e n t a m o u 0005020 s e b u t t o n h a n d l e 0005040 r f o r t h e I n t e r l 0005060 i s p - D w i n d o w s y s 0005100 t e m w i t h i n C o m m o 0005120 n L i s p a n d h a v e 0005140 t h a t f u n c t i o n u s 0005160 e o t h e r e x i s t i n g 0005200 I n t e r l i s p - D f u n 0005220 c t i o n s a n d f a c i l 0005240 i t i e s f r e e l y . \r T h 0005260 i s r e q u i r e m e n t h 0005300 a s m a j o r c o n s e q u 0005320 e n c e s . F o r e x a m 0005340 p l e , i t f o r e c l o s 0005360 e s t h e k i n d o f i 0005400 s o l a t e d , s e p a r a t 0005420 e i m p l e m e n t a t i o n 0005440 t h a t w a s u s e d t 0005460 o b r i n g P r o l o g i 0005500 n t o I n t e r l i s p , s 0005520 i n c e P r o l o g h a s 0005540 l i m i t e d a b i l i t y 0005560 t o a c c e s s t h e I n 0005600 t e r l i s p e n v i r o n m 0005620 e n t a r o u n d i t . 0005640 I t m a n d a t e s t h a t 0005660 I n t e r l i s p a n d C 0005700 o m m o n L i s p f u n c t 0005720 i o n s a n d d a t a s t 0005740 r u c t u r e s b e m e r g 0005760 e d ( s o t h a t d a t a 0006000 c a n b e p a s s e d e 0006020 a s i l y f r o m o n e w 0006040 o r l d t o t h e o t h e 0006060 r ) a n d s t r o n g l y 0006100 s u g g e s t s t h a t t h 0006120 e s t a c k s b e c o m m 0006140 o n a l s o . L u c k i l 0006160 y , m a n y o f t h e s e 0006200 s i t u a t i o n s a r e 0006220 s i m p l y c a s e s o f 0006240 p r o v i d i n g d i f f e r 0006260 e n t w a y s o f d e s c 0006300 r i b i n g t h e s a m e , 0006320 c o m m o n , r u n t i m e 0006340 e n v i r o n m e n t ( t h 0006360 e l a n g u a g e s a r e , 0006400 a f t e r a l l , d i a l 0006420 e c t s o f e a c h o t h 0006440 e r ) . T h e r e a r e , 0006460 o f c o u r s e , s o m e 0006500 s i t u a t i o n s w h e r 0006520 e t h e t w o l a n g u a 0006540 g e s c a n n o t b e f r 0006560 e e l y i n t e g r a t e d , 0006600 e . g . , w h e n t h e y 0006620 a s c r i b e d i f f e r e 0006640 n t m e a n i n g s t o t 0006660 h e s a m e t h i n g s . 0006700 H o w e v e r , w h e r e v 0006720 e r i t i s r e a s o n a 0006740 b l e t o p r o v i d e a 0006760 c c e s s f r o m o n e t 0007000 o t h e o t h e r , i t 0007020 i s t o b e p r o v i d e 0007040 d . \r 4 . T h e r e i s 0007060 t o b e a p r o g r a m 0007100 d e v e l o p m e n t e n v i 0007120 r o n m e n t f o r C o m m 0007140 o n L i s p c o n s i s t i 0007160 n g o f a t l e a s t a 0007200 s i m p l e c o m p i l e r 0007220 , p r o g r a m e d i t o r 0007240 a n d d e b u g g e r . 0007260 T h i s r e q u i r e m e n t 0007300 f o r e c l o s e s t h e 0007320 o p t i o n o f p r o v i d 0007340 i n g s i m p l y a n o n 0007360 - 1 1 0 0 r e s i d e n t c 0007400 r o s s - c o m p i l e r a n 0007420 d e n s u r e s t h a t i 0007440 t w i l l b e p o s s i b 0007460 l e t o d e v e l o p C o 0007500 m m o n L i s p c o d e w 0007520 i t h i n t h e r e s u l t 0007540 i n g s y s t e m . H o w 0007560 e v e r , i t i s n o t 0007600 a r e q u i r e m e n t , a 0007620 n d t h i s p r o p o s a l 0007640 d o e s n o t p r o v i d 0007660 e , t h a t t h e p r o d 0007700 u c t c o n t a i n a n i 0007720 n t e g r a t e d s e t o f 0007740 p r o g r a m m i n g t o o 0007760 l s f o r C o m m o n L i 0010000 s p o f t h e c o m p l e 0010020 x i t y a n d r a n g e o 0010040 f I n t e r l i s p - D . 0010060 N e i t h e r i s t h e r e 0010100 a n y r e q u i r e m e n t 0010120 t o m e r g e t h e t w 0010140 o l a n g u a g e s ' r e p 0010160 r e s e n t a t i o n s o f 0010200 p r o g r a m s ( s o t h a 0010220 t , f o r e x a m p l e , 0010240 t h e I n t e r l i s p e d 0010260 i t o r c o u l d b e o r 0010300 w o u l d h a v e t o b 0010320 e , u s e d o n C o m m o 0010340 n L i s p p r o g r a m s ) 0010360 . I n s t e a d , t h i s 0010400 r e q u i r e m e n t c a n 0010420 b e s a t i s f i e d ( a 0010440 s t h i s p r o p o s a l 0010460 c h o o s e s t o ) b y p 0010500 r o v i d i n g a s i m p l 0010520 e t e x t b a s e d e d i 0010540 t i n g a n d f i l i n g 0010560 r e p r e s e n t a t i o n o 0010600 f C o m m o n L i s p p r 0010620 o g r a m s ( s i m i l a r 0010640 t o t h a t c u r r e n t l 0010660 y p r o v i d e d b y L u 0010700 c i d ) a n d d e f e r s 0010720 t h e i s s u e o f a u 0010740 n i f i e d p r o g r a m m i 0010760 n g e n v i r o n m e n t f 0011000 o r l a t e r s t u d y . \r 0011020 5 . I t i s r e q u i r 0011040 e d t h a t t h e p e r f 0011060 o r m a n c e o f t h e e 0011100 v e n t u a l s y s t e m , 0011120 r u n n i n g i n e i t h e 0011140 r I n t e r l i s p o r C 0011160 o m m o n L i s p m o d e , 0011200 s h o u l d b e a t l e 0011220 a s t 8 0 % o f t h e c 0011240 u r r e n t p e r f o r m a n 0011260 c e o f I n t e r l i s p - 0011300 D o n t h e 1 1 8 6 , i 0011320 . e . C o m m o n L i s p 0011340 p e r f o r m a n c e i s n 0011360 o t t o b e a l l o w e d 0011400 t o d e g r a d e a r b i 0011420 t r a r i l y f a r b e n e 0011440 a t h o u r e x i s t i n g 0011460 p r o d u c t . D e m o n 0011500 s t r a t i o n o f t h i s 0011520 i s t o b e v i a t h 0011540 e G a b r i e l b e n c h m 0011560 a r k s u i t e . \r 6 . T 0011600 h e i m p l e m e n t a t i o 0011620 n i s t o f a c i l i t a 0011640 t e a s m u c h a s p o 0011660 s s i b l e t h e a d o p t 0011700 i o n o f C o m m o n L o 0011720 o p s . T h i s i s n o 0011740 t s e e n a s a p r o b 0011760 l e m f o r a n y f u l l 0012000 C o m m o n L i s p i m p 0012020 l e m e n t a t i o n . \r T h e 0012040 s e r e q u i r e m e n t s 0012060 f o r c i b l y r e s t r i c 0012100 t t h e r a n g e o f a 0012120 c c e p t a b l e i m p l e m 0012140 e n t a t i o n s . H o w e v 0012160 e r , w e b e l i e v e t 0012200 h a t t h e y c a n a l l 0012220 b e a c h i e v e d b y 0012240 t h e p l a n d e s c r i b 0012260 e d b e l o w . \r 2 . P r o 0012300 d u c t d e s c r i p t i o n 0012320 \r T h i s p l a n p r o p o 0012340 s e s a n i m p l e m e n t 0012360 a t i o n o f C o m m o n 0012400 L i s p a s a n i n t e g 0012420 r a t e d e x t e n s i o n 0012440 o f t h e p r e s e n t I 0012460 n t e r l i s p b a s e d s 0012500 o f t w a r e . F r o m t 0012520 h e u s e r ' s p o i n t 0012540 o f v i e w , t h i s w o 0012560 u l d a p p e a r a s a 0012600 n e w r e l e a s e o f " 0012620 X e r o x L i s p " t h a t 0012640 w a s n e a r l y ( p e r 0012660 h a p s t o t a l l y ) b a 0012700 c k w a r d c o m p a t i b l 0012720 e f o r e x i s t i n g c 0012740 o d e , b u t t h a t w a 0012760 s e x t e n d e d i n a 0013000 v a r i e t y o f w a y s . 0013020 \r O n e s u c h e x t e n s 0013040 i o n w o u l d b e t h e 0013060 a b i l i t y t o u s e 0013100 C o m m o n L i s p c o n s 0013120 t r u c t s i n e x i s t i 0013140 n g c o d e w h e n i t 0013160 i s m o d i f i e d o r e 0013200 x t e n d e d . I n m a 0013220 n y c a s e s , w e w o u 0013240 l d e n c o u r a g e t h e 0013260 C o m m o n L i s p c o n 0013300 s t r u c t s t o b e u s 0013320 e d i n p l a c e o f e 0013340 x i s t i n g I n t e r l i s 0013360 p e q u i v a l e n t s a n 0013400 d , o v e r t i m e , w e 0013420 w o u l d r e t i r e t h 0013440 e l a t t e r . [ T h e r 0013460 e i s a s i g n i f i c a 0013500 n t d o c u m e n t a t i o n 0013520 t a s k r e q u i r e d t 0013540 o s t a g e t h i s g r a 0013560 d u a l t r a n s i t i o n , 0013600 w h i c h m u s t b e s 0013620 e p a r a t e l y e s t i m a 0013640 t e d . ] B y u s i n g 0013660 C o m m o n L i s p f o r m 0013700 s i n t h e i r o n g o i 0013720 n g d e v e l o p m e n t , 0013740 u s e r s c o u l d e a s i 0013760 l y s t a r t c o n v e r t 0014000 i n g t h e i r c o d e ( 0014020 i n c l u d i n g X e r o x ' 0014040 i n - h o u s e s y s t e m 0014060 a n d a p p l i c a t i o n 0014100 c o d e ) i n t o C o m m 0014120 o n L i s p . \r A n o t h e r 0014140 e x t e n s i o n w o u l d 0014160 b e t h e a b i l i t y 0014200 t o w r i t e n e w C o m 0014220 m o n L i s p c o d e t h 0014240 a t c o u l d b e f r e e 0014260 l y i n t e r m i n g l e d 0014300 w i t h I n t e r l i s p c 0014320 o d e i n e x i s t i n g 0014340 a p p l i c a t i o n s . T 0014360 h u s , u s e r s w o u l d 0014400 h a v e t h e c h o i c e 0014420 o f w r i t i n g n e w 0014440 c o d e a n d a p p l i c a 0014460 t i o n s e n t i r e l y w 0014500 i t h i n C o m m o n L i s 0014520 p ( s o t h a t i t c o 0014540 u l d b e p o r t e d t o 0014560 o t h e r s y s t e m s ) 0014600 w h i l e m a i n t a i n i n 0014620 g t h e i r e x i s t i n g 0014640 a p p l i c a t i o n c o d 0014660 e ( i f a n y ) a n d c 0014700 o n t i n u i n g t o u s e 0014720 t h e e x i s t i n g I n 0014740 t e r l i s p b a s e o f 0014760 s y s t e m t o o l s ( a l 0015000 l o f w h i c h w o u l d 0015020 b e c a l l a b l e d i r 0015040 e c t l y f r o m C o m m o 0015060 n L i s p c o d e ) . \r A l 0015100 t e r n a t i v e l y , t h e 0015120 u s e r w o u l d b e a 0015140 b l e t o r e a d s t a n 0015160 d a r d C o m m o n L i s p 0015200 c o d e t h a t h a d b 0015220 e e n d e v e l o p e d o n 0015240 o t h e r m a c h i n e s 0015260 a n d c o m p i l e a n d 0015300 u s e i t f r e e l y w i 0015320 t h i n t h e X e r o x e 0015340 n v i r o n m e n t . N o t 0015360 e t h a t w e e x p e c t 0015400 t h a t , f o r t h e i 0015420 m m e d i a t e f u t u r e , 0015440 m o s t u s e r s w i l l 0015460 b e p r o g r a m m i n g 0015500 i n e x t e n d e d s u p e 0015520 r s e t s o f C o m m o n 0015540 L i s p ( s u c h a s Z e 0015560 t a L i s p o r C o m m o n 0015600 I n t e r l i s p ) , s o w 0015620 e d o n o t e x p e c t 0015640 s u c h p o r t s t o b e 0015660 e n t i r e l y a u t o m a 0015700 t i c b e t w e e n a n y 0015720 t w o s y s t e m s . H o 0015740 w e v e r , t o t h e e x 0015760 t e n t t h a t c o d e p 0016000 o r t i n g i s p o s s i b 0016020 l e i n g e n e r a l , i 0016040 t w o u l d b e p o s s i 0016060 b l e h e r e . \r I n p l a 0016100 c e s w h e r e t h e t w 0016120 o l a n g u a g e s h a v e 0016140 t h e s a m e c o n s t r 0016160 u c t s d e f i n e d t o 0016200 h a v e d i f f e r e n t b 0016220 e h a v i o r ( e . g . , E 0016240 V A L a n d m a n y o t h 0016260 e r s ) , w e w i l l u s 0016300 e t h e p a c k a g e s y 0016320 s t e m o f C o m m o n L 0016340 i s p t o a l l o w t h e 0016360 u s e r t o s p e c i f y 0016400 w h i c h b e h a v i o r 0016420 i s r e q u i r e d . I n 0016440 m o s t c a s e s , w e 0016460 e x p e c t c o d e t o b 0016500 e w r i t t e n p r i m a r 0016520 i l y i n o n e o f t h 0016540 e t w o d i a l e c t s o 0016560 r i n t h e g r o w i n g 0016600 c o m m o n s u b s e t , 0016620 i n w h i c h c a s e n o 0016640 d i a l e c t d i s c r i m 0016660 i n a t i o n w o u l d b e 0016700 r e q u i r e d . H o w e 0016720 v e r , f o r t h e u s e 0016740 r m a i n t a i n i n g a 0016760 t r u l y m i x e d - d i a l 0017000 e c t a p p l i c a t i o n , 0017020 t h i s m e c h a n i s m 0017040 w o u l d p r o v i d e a 0017060 w o r k a b l e s o l u t i o 0017100 n . P r i m a r y a m o n 0017120 g t h e s e u s e r s w o 0017140 u l d b e t h e X A I S 0017160 d e v e l o p m e n t s t a f 0017200 f i t s e l f , w h o w i 0017220 l l r e l y o n t h i s 0017240 f a c i l i t y h e a v i l y 0017260 . \r O n e a r e a i n w h 0017300 i c h t h e t w o l a n g 0017320 u a g e s w i l l n o t c 0017340 o n v e r g e i m m e d i a t 0017360 e l y i s p r o g r a m m i 0017400 n g t o o l s . N o t o 0017420 n l y a r e t h e t w o 0017440 l a n g u a g e s " n a t i v 0017460 e s t y l e s " r a t h e r 0017500 d i f f e r e n t , b u t 0017520 s o m e f e a t u r e s o f 0017540 C o m m o n L i s p a r e 0017560 a w k w a r d t o t r e a 0017600 t i n t h e s t y l e o 0017620 f I n t e r l i s p - D ' s 0017640 r e s i d e n t i a l t o o l 0017660 s . T h u s , t h i s p 0017700 r o d u c t w i l l n o t 0017720 i n i t i a l l y c o n t a i 0017740 n a n i n t e g r a t e d 0017760 s e t o f p r o g r a m m i 0020000 n g t o o l s f o r C o m 0020020 m o n L i s p o f t h e 0020040 c o m p l e x i t y a n d r 0020060 a n g e o f t h o s e f o 0020100 r I n t e r l i s p - D . 0020120 I n p a r t i c u l a r , t 0020140 h e u s e r w i l l n o t 0020160 b e r e q u i r e d t o 0020200 m e r g e t h e t w o l a 0020220 n g u a g e s ' r e p r e s e 0020240 n t a t i o n s o f p r o g 0020260 r a m s ( s o t h a t , f 0020300 o r e x a m p l e , t h e 0020320 I n t e r l i s p e d i t o r 0020340 w o u l d h a v e t o b 0020360 e u s e d o n C o m m o n 0020400 L i s p p r o g r a m s ) . 0020420 I n s t e a d , w e w i 0020440 l l p r o v i d e a s i m 0020460 p l e t e x t b a s e d e 0020500 d i t i n g a n d f i l i n 0020520 g r e p r e s e n t a t i o n 0020540 o f C o m m o n L i s p 0020560 p r o g r a m s ( s i m i l a 0020600 r t o t h a t c u r r e n 0020620 t l y p r o v i d e d b y 0020640 L u c i d ) . T h u s , u 0020660 s e r s o p e r a t i n g w 0020700 i t h " p u r e " C o m m o 0020720 n L i s p c o d e c a n 0020740 c h o o s e t o e d i t a 0020760 n d f i l e i t t h e w 0021000 a y t h e y a r e u s e d 0021020 t o ( r e a d i n g i t 0021040 t h r o u g h a s e p a r a 0021060 t e r e a d e r a n d m a 0021100 y b e c h o o s i n g t o 0021120 c o n t r o l i t f r o m 0021140 a s e p a r a t e E x e c , 0021160 o p t i m i z e d f o r C 0021200 o m m o n L i s p , a s t 0021220 h e e x i s t i n g o n e 0021240 i s f o r I n t e r l i s p 0021260 ) . O n t h e o t h e r 0021300 h a n d , t h e y c o u l 0021320 d c h o o s e t o p r o g 0021340 r a m i n t h e C o m m o 0021360 n I n t e r l i s p j o i n t 0021400 s u b s e t a n d u s e 0021420 t h e I n t e r l i s p p r 0021440 o g r a m m i n g t o o l s 0021460 ( a s w e e x p e c t m o 0021500 s t i n t e r n a l u s e r 0021520 s t o ) . T h i s d e f 0021540 e r s t h e i s s u e o f 0021560 a u n i f o r m p r o g r 0021600 a m m i n g e n v i r o n m e 0021620 n t f o r b o t h l a n g 0021640 u a g e s f o r l a t e r 0021660 d e v e l o p m e n t a s e 0021700 x p e r i e n c e w i t h u 0021720 s i n g C o m m o n L i s p 0021740 i n t h e I n t e r l i s 0021760 p t o o l s e t i s a c 0022000 c u m u l a t e d , w h i l e 0022020 s t i l l p r o v i d i n g 0022040 a s f u l l a s e t o 0022060 f C o m m o n L i s p p r 0022100 o g r a m m i n g t o o l s 0022120 a s w i l l b e p r o v i 0022140 d e d b y m o s t o f o 0022160 u r c o m p e t i t o r s . \r 0022200 T h e r e s u l t i n g i n 0022220 t e g r a t e d s y s t e m 0022240 w o u l d p r o v i d e t w 0022260 o d i f f e r e n t f a c e 0022300 s t o t h e u s e r f o 0022320 r t h e s a m e ( e x t e 0022340 n d e d ) s e t o f b a s 0022360 i c f a c i l i t i e s . 0022400 U s e r s c o u l d u s e 0022420 i t t o p r o g r a m " p 0022440 u r e l y " i n e i t h e r 0022460 d i a l e c t , t h r o u g 0022500 h d i f f e r e n t w i n d 0022520 o w b a s e d i n t e r f a 0022540 c e s , o r " t o g e t h e 0022560 r " i n a m e r g e d C 0022600 o m m o n I n t e r l i s p d 0022620 i a l e c t t h a t t a k e 0022640 s a d v a n t a g e o f m 0022660 o s t o f t h e f e a t u 0022700 r e s o f b o t h . I n 0022720 e i t h e r e v e n t , t 0022740 h e c o d e a n d d a t a 0022760 t h a t r e s u l t s w o 0023000 u l d b e f r e e l y i n 0023020 t e r c h a n g e a b l e b e 0023040 t w e e n a n d a m o n g 0023060 d e v e l o p i n g a p p l i 0023100 c a t i o n s s o t h a t 0023120 t h e s y s t e m w o u l d 0023140 p r o v i d e a s m o o t 0023160 h , c o h e r e n t t r a n 0023200 s i t i o n p a t h f o r 0023220 b o t h o u r p r e s e n t 0023240 c u s t o m e r s a n d X 0023260 e r o x ' s i n t e r n a l 0023300 c o d e a s s e t s , b o t 0023320 h w i t h i n a n d o u t 0023340 s i d e o f X A I S . \r 3 0023360 . P l a n \r 3 . 1 S t r a t 0023400 e g y \r T h e f i r s t k e 0023420 y e l e m e n t o f t h i 0023440 s p l a n i s t o e x t 0023460 e n d t h e e x i s t i n g 0023500 I n t e r l i s p k e r n e 0023520 l s o f t w a r e t o p r 0023540 o v i d e s u p p o r t f o 0023560 r t h e s e m a n t i c s 0023600 o f C o m m o n L i s p , 0023620 i n a d d i t i o n t o t 0023640 h o s e o f I n t e r l i s 0023660 p . A t a b a s i c l 0023700 e v e l , I n t e r l i s p 0023720 a n d C o m m o n L i s p 0023740 p r o g r a m a n d d a t a 0023760 s t r u c t u r e s a r e 0024000 t o b e m e r g e d , s o 0024020 t h a t t h e y c a n f 0024040 r e e l y c a l l a n d u 0024060 s e e a c h o t h e r a s 0024100 e l e m e n t s o f r u n 0024120 n i n g s y s t e m s . T 0024140 h i s p r o v i d e s a t 0024160 a r g e t r u n t i m e w 0024200 h i c h c a n s u p p o r t 0024220 p r o g r a m s w r i t t e 0024240 n i n e i t h e r d i a l 0024260 e c t o r a n y h y b r i 0024300 d . \r W e w o u l d t h e n 0024320 p o r t a s i g n i f i c 0024340 a n t f r a c t i o n o f 0024360 s o m e e x i s t i n g , a 0024400 v a i l a b l e C o m m o n 0024420 L i s p i m p l e m e n t a t 0024440 i o n , s u c h a s S p i 0024460 c e L i s p , o n t o t h 0024500 i s e x t e n d e d k e r n 0024520 e l . T h i s w o u l d 0024540 p r o v i d e b o t h s o m 0024560 e o f t h e l a n g u a g 0024600 e f e a t u r e s r e q u i 0024620 r e d t o a c c e p t C o 0024640 m m o n L i s p p r o g r a 0024660 m s w h i c h a r e m i s 0024700 s i n g f r o m I n t e r l 0024720 i s p ( e . g . , e x t e n 0024740 d e d L A M B D A - l i s t 0024760 p r o c e s s i n g , l e x i 0025000 c a l s c o p i n g ) a n d 0025020 a v a r i e t y o f u t 0025040 i l i t y c o d e ( e . g . 0025060 r a t i o n a l a r i t h m 0025100 e t i c ) w h i c h a r e 0025120 d i a l e c t n e u t r a l 0025140 b u t d e f i n e d t o b 0025160 e a v a i l a b l e t o a 0025200 C o m m o n L i s p p r o 0025220 g r a m . \r I t i s i m p o 0025240 r t a n t t o r e c o g n i 0025260 z e t h a t , a l t h o u g 0025300 h t h e b u l k o f t h 0025320 e w o r k i s t h e l a 0025340 t t e r , t h e m o s t d 0025360 i f f i c u l t a s p e c t 0025400 o f t h e j o b i s t h 0025420 e f o r m e r ( t h e k e 0025440 r n e l ) , b o t h i n t 0025460 i m e , e x p e r t i s e r 0025500 e q u i r e d , a n d t h e 0025520 i m p a c t o f t h e i 0025540 m p l e m e n t a t i o n ' s 0025560 q u a l i t y o n t h e o 0025600 v e r a l l q u a l i t y o 0025620 f t h e s y s t e m . I 0025640 t s h o u l d a l s o b e 0025660 r e c o g n i z e d t h a t 0025700 a h i g h q u a l i t y 0025720 j o b o n t h e k e r n e 0025740 l i s a p r e r e q u i s 0025760 i t e o f a n y i m p l e 0026000 m e n t a t i o n t h a t s 0026020 a t i s f i e s t h e i n t 0026040 e r o p e r a b i l i t y r e 0026060 q u i r e m e n t i n i t s 0026100 p r e s e n t , s t r o n g 0026120 f o r m . \r T h e s e c o n 0026140 d k e y e l e m e n t i s 0026160 t o e x p e d i t e a c h 0026200 i e v i n g c o m p l e t e 0026220 c o v e r a g e o f t h e 0026240 C o m m o n L i s p l a n g 0026260 u a g e a s m u c h a s 0026300 p o s s i b l e , a n d t o 0026320 o p t i m i z e t h e p e 0026340 r f o r m a n c e a n d p a 0026360 c k a g i n g s e c o n d a r 0026400 i l y , a s t i m e p e r 0026420 m i t s . N o t o n l y 0026440 i s t h i s a d i r e c t 0026460 r e f l e c t i o n o f t 0026500 h e p r i m a r y r e q u i 0026520 r e m e n t , b u t i t a 0026540 l l o w s u s t o o b t a 0026560 i n e a r l y e x p e r i e 0026600 n c e w i t h a c o m p l 0026620 e t e h y b r i d s y s t e 0026640 m s o t h a t w e k n o 0026660 w w h e r e t o d i r e c 0026700 t o u r l a t e r e f f o 0026720 r t s . I t a l s o p r 0026740 o v i d e s a c o m p l e t 0026760 e i m p l e m e n t a t i o n 0027000 e a r l y o n . T h i s 0027020 w i l l a l l o w p o r t 0027040 i n g o f b o t h a p p l 0027060 i c a t i o n c o d e a n d 0027100 t h e f r i n g e s o f 0027120 t h e C o m m o n L i s p 0027140 l a n g u a g e i t s e l f 0027160 ( e . g . f o r m a t s t a 0027200 t e m e n t s ) t o p r o c 0027220 e e d a s e a r l y a s 0027240 p o s s i b l e a n d i n 0027260 p a r a l l e l w i t h k e 0027300 r n e l p e r f o r m a n c e 0027320 e n g i n e e r i n g . T h 0027340 u s , w e w i l l p a t c 0027360 h t o g e t h e r a w o r 0027400 k a b l e k e r n e l a n d 0027420 k e y l a n g u a g e c o 0027440 n s t r u c t s a s q u i c 0027460 k l y a s p o s s i b l e 0027500 a n d t h e n i t e r a t i 0027520 v e l y r e i m p l e m e n t 0027540 t h e w o r s t p e r f o 0027560 r m a n c e o f f e n d e r s 0027600 u n t i l a d e q u a t e 0027620 o v e r a l l p e r f o r m a 0027640 n c e i s a c h i e v e d . 0027660 T h u s , w e h o p e 0027700 t o b e i n a p o s i t 0027720 i o n t o g i v e a f a 0027740 i r l y c o m p l e t e d e 0027760 m o n s t r a t i o n o f C 0030000 o m m o n L i s p ( a n d 0030020 t h u s r e c o u p o u r 0030040 m a r k e t i n g p o s i t i 0030060 o n ) a s e a r l y a s 0030100 m i d - M a y , a l t h o u g 0030120 h a r e a s o n a b l y h 0030140 a b i t a b l e s y s t e m 0030160 i s u n l i k e l y t o b 0030200 e a v a i l a b l e u n t i 0030220 l m u c h l a t e r i n 0030240 t h e s u m m e r . \r 3 . 2 0030260 T a c t i c s \r G i v e n t h 0030300 a t o n e h a s a n e x 0030320 i s t i n g L i s p s y s t 0030340 e m , C o m m o n L i s p 0030360 c a n b e t h o u g h t o 0030400 f a s a s e t o f a d 0030420 d i t i o n a l l a n g u a g 0030440 e f e a t u r e s t o b e 0030460 b r o u g h t i n t o t h 0030500 a t s y s t e m . B y t 0030520 h i n k i n g o f l a y i n 0030540 g o n e l a n g u a g e a 0030560 t o p t h e o t h e r , i 0030600 t c a n b e s e e n t h 0030620 a t m a n y o f t h e i r 0030640 f e a t u r e s w i l l o 0030660 v e r l a p . T h o s e f 0030700 e a t u r e s i n t h e n 0030720 e w d i a l e c t t h a t 0030740 d o n o t o v e r l a p a 0030760 n y o f t h e e x i s t i 0031000 n g o n e s a r e c o m p 0031020 l e t e l y n e w a d d i t 0031040 i o n s . O v e r l a p p i 0031060 n g f e a t u r e s c a n 0031100 b e e i t h e r i d e n t i 0031120 c a l o r n o n - i d e n t 0031140 i c a l ( s i m i l a r b u 0031160 t n o t t h e s a m e ) . 0031200 \r I d e n t i c a l o v e r l 0031220 a p a l l o w s u s t o 0031240 u s e a n e x i s t i n g 0031260 I n t e r l i s p f e a t u r 0031300 e t o i m p l e m e n t a 0031320 C o m m o n L i s p f e a 0031340 t u r e . T h i s r e q u 0031360 i r e s o n l y t h e e f 0031400 f o r t o f i d e n t i f y 0031420 i n g t h e f e a t u r e 0031440 a n d ( p o s s i b l y ) p 0031460 r o v i d i n g a n a l t e 0031500 r n a t e n a m e o r i n 0031520 t e r f a c e t o i t . 0031540 E x a m p l e s o f t h i s 0031560 a r e a l l o f t h e 0031600 p r i m i t i v e l i s t o 0031620 p e r a t i o n s l i k e C 0031640 A R , C D R , C O N S , e 0031660 t c . A n i d e n t i c a 0031700 l f e a t u r e m a y a l 0031720 s o h a v e t o b e m o 0031740 d i f i e d i f i t s p e 0031760 r f o r m a n c e i s c r i 0032000 t i c a l i n C o m m o n 0032020 L i s p a n d w a s n o t 0032040 i n I n t e r l i s p - D . 0032060 \r N o n - i d e n t i c a l f 0032100 e a t u r e s m u s t e i t 0032120 h e r b e n e w l y i m p 0032140 l e m e n t e d o r t h e 0032160 I n t e r l i s p f e a t u r 0032200 e m a y h a v e t o b e 0032220 e x t e n d e d t o " c o 0032240 v e r " t h e C o m m o n 0032260 L i s p b e h a v i o r . 0032300 T h e c h o i c e o f w h 0032320 i c h o p t i o n t o t a 0032340 k e d e p e n d s p r i m a 0032360 r i l y o n t h e p e r f 0032400 o r m a n c e i m p a c t . 0032420 A n e x a m p l e o f t 0032440 h i s w o u l d b e t h e 0032460 a d d i t i o n o f p a c 0032500 k a g e f u n c t i o n a l i 0032520 t y t o t h e I n t e r l 0032540 i s p r e a d e r a n d p 0032560 r i n t e r . M o d i f y i 0032600 n g I n t e r l i s p b o t 0032620 h a d d s t h e v a l u e 0032640 o f a C o m m o n L i s 0032660 p f e a t u r e t o I n t 0032700 e r l i s p a n d p r o v i 0032720 d e s t h e n e w f e a t 0032740 u r e a t l o w e r c o s 0032760 t . \r W e c a n i d e n t i 0033000 f y t w o m a j o r a i d 0033020 s i n i m p l e m e n t i n 0033040 g b o t h n e w a n d n 0033060 o n - i d e n t i c a l f e a 0033100 t u r e s o f C o m m o n 0033120 L i s p . F i r s t , i s 0033140 t h e a v a i l a b i l i t 0033160 y o f e x i s t i n g i m 0033200 p l e m e n t a t i o n s o f 0033220 C o m m o n L i s p f e a 0033240 t u r e s w r i t t e n i n 0033260 C o m m o n L i s p s u b 0033300 s e t s . T h e s e g r e a 0033320 t l y s i m p l i f y t h e 0033340 p o r t i n g o f m u c h 0033360 o f t h e l a n g u a g e 0033400 , g i v e n a C o m m o n 0033420 L i s p s u p p o r t i n g 0033440 k e r n e l , a n d w e 0033460 p l a n t o u s e o n e 0033500 o f t h e s e t o o b t a 0033520 i n m u c h o f t h e b 0033540 u l k o f t h e l a n g u 0033560 a g e . T h e m o s t e 0033600 a s i l y a v a i l a b l e 0033620 i s t h e p u b l i c d o 0033640 m a i n S p i c e L i s p 0033660 c o d e f r o m C a r n e g 0033700 i e - M e l l o n U n i v e r 0033720 s i t y . T h i s h a s b 0033740 e e n t h e b a s i s f o 0033760 r m o s t e x i s t i n g 0034000 C o m m o n L i s p i m p l 0034020 e m e n t a t i o n s ( i n c 0034040 l u d i n g L u c i d ' s ) , 0034060 h a s u n d e r g o n e f 0034100 o u r y e a r s o f p u b 0034120 l i c l y a v a i l a b l e 0034140 d e b u g g i n g a n d i s 0034160 a n a c c e p t e d s t a 0034200 n d a r d w i t h i n t h e 0034220 C o m m o n L i s p c o m 0034240 m u n i t y . I n t h i s 0034260 p r o p o s a l , w e h a 0034300 v e p l a n n e d o n u s 0034320 i n g t h e S p i c e L i 0034340 s p s o u r c e s t o e x 0034360 p e d i t e o u r p o r t , 0034400 a l t h o u g h o t h e r 0034420 h i g h q u a l i t y s o u 0034440 r c e s w o u l d a l s o 0034460 b e f i n e i f t h e y 0034500 w e r e c o s t e f f e c t 0034520 i v e t o o b t a i n . \r S 0034540 e c o n d , m a n y n e w 0034560 f e a t u r e s ( e . g . , 0034600 t h e m a p p i n g a n d 0034620 s e q u e n c e f u n c t i o 0034640 n s ) h a v e a l r e a d y 0034660 b e e n i m p l e m e n t e 0034700 d f o r t h e e x i s t i 0034720 n g k e r n e l w i t h i n 0034740 t h e I n t e r l i s p - D 0034760 C M L L i s p L i b r a r 0035000 y p a c k a g e . W h i l 0035020 e t h e q u a l i t y o f 0035040 t h e s e v a r i e s w i 0035060 d e l y , t h e y p r o v i 0035100 d e t h e n e e d e d e a 0035120 r l y c o v e r a g e a n d 0035140 a g o o d b a s e f r o 0035160 m w h i c h t o p r o c e 0035200 e d . \r 3 . 3 O v e r v i e w 0035220 \r T h e a n a l y s i s w h 0035240 i c h f o l l o w s d i v i 0035260 d e s t h e t a s k i n t 0035300 o t h r e e c a t e g o r i 0035320 e s : c r i t i c a l f u n 0035340 c t i o n a l i t y o r p e 0035360 r f o r m a n c e - o r i e n t 0035400 e d c o d e r e q u i r e d 0035420 t o f o r m t h e k e r 0035440 n e l o f t h e i m p l e 0035460 m e n t a t i o n , m e d i u 0035500 m s c a l e i n t e g r a t 0035520 i o n r e q u i r i n g s i 0035540 m p l e c h a n g e s t o 0035560 I n t e r l i s p o r C o m 0035600 m o n L i s p c o d e , a 0035620 n d t h e s t r a i g h t f 0035640 o r w a r d i m p o r t o f 0035660 f e a t u r e s f r o m e 0035700 x t e r n a l C o m m o n L 0035720 i s p s o u r c e s . D e 0035740 v e l o p m e n t e f f o r t 0035760 i s p h a s e d i n t h 0036000 a t o r d e r s o t h a t 0036020 i t c a n b e s p e n t 0036040 o p t i m a l l y o n t i 0036060 m e - c r i t i c a l p a r t 0036100 s o f t h e s y s t e m . 0036120 O u t s i d e o f d i r 0036140 e c t s o f t w a r e d e v 0036160 e l o p m e n t t i m e t h 0036200 e r e l i e s t e s t i n g 0036220 a n d d e b u g g i n g , 0036240 w h i c h i s e s t i m a t 0036260 e d l a t e r , u s i n g 0036300 r o u g h e s t i m a t i o n 0036320 t e c h n i q u e s b a s e 0036340 d o n t h e s i z e o f 0036360 t h e d e v e l o p m e n t 0036400 e f f o r t . F i n a l l y 0036420 , o u t s i d e t h i s p 0036440 r o p o s a l e n t i r e l y 0036460 , l i e s e n g i n e e r i 0036500 n g t e s t i n g , r e l e 0036520 a s e a n d d o c u m e n t 0036540 a t i o n , w h i c h s h o 0036560 u l d b e e s t i m a t e d 0036600 b y t h e a p p r o p r i 0036620 a t e f u n c t i o n a l g 0036640 r o u p s , b u t d o n o 0036660 t s i g n i f i c a n t l y 0036700 i n t e r a c t w i t h t h 0036720 e c h o i c e o f d e v e 0036740 l o p m e n t s t r a t e g y 0036760 a d d r e s s e d h e r e . 0037000 \r 3 . 4 C r i t i c a l f e 0037020 a t u r e s \r P a c k a g e s \r 0037040 T h i s i s n o t o n l y 0037060 a k e y f e a t u r e o 0037100 f C o m m o n L i s p , b 0037120 u t i s a n e n a b l i n 0037140 g f e a t u r e o f a n 0037160 o n - i n t e r f e r i n g C 0037200 o m m o n L i s p / I n t e r 0037220 l i s p d e v e l o p m e n t 0037240 , a s i t a l l o w s a 0037260 d i v i s i o n o f I n t 0037300 e r l i s p a n d C o m m o 0037320 n L i s p n a m e s p a c 0037340 e s . F u n c t i o n s o 0037360 f t h e s a m e n a m e 0037400 i n I n t e r l i s p - D a 0037420 n d X e r o x C o m m o n 0037440 L i s p w i l l b e d i f 0037460 f e r e n t a n d c a n b 0037500 e s p e c i f i e d i n e 0037520 i t h e r d i a l e c t b y 0037540 a p r e f i x , e . g . , 0037560 I N T E R L I S P : E R R O R 0037600 i s d i s t i n g u i s h e 0037620 d f r o m t h e C o m m o 0037640 n L i s p f u n c t i o n 0037660 o f t h e s a m e n a m e 0037700 , L I S P : E R R O R . T 0037720 h e r e a r e s e v e r a l 0037740 p a r t s t o t h i s i 0037760 t e m : \r 1 . I m p l e m e 0040000 n t t h e p a c k a g e f 0040020 u n c t i o n s I N T E R N 0040040 e t a l . I f w e w e 0040060 r e w i l l i n g t o a c 0040100 c e p t a m a x i m u m o 0040120 f 2 5 5 p a c k a g e s i 0040140 n t h e f i r s t i m p l 0040160 e m e n t a t i o n , w e c 0040200 o u l d k e e p t h e c u 0040220 r r e n t r e p r e s e n t a 0040240 t i o n o f s y m b o l s 0040260 e s s e n t i a l l y u n c h 0040300 a n g e d , m e r e l y i n 0040320 s e r t i n g a b y t e f 0040340 i e l d i n a s p a r e 0040360 s y m b o l l o c a t i o n 0040400 t o s e r v e a s a s y 0040420 m b o l ' s p a c k a g e i 0040440 n d e x . T h e c o d e 0040460 t h a t m a i n t a i n s p 0040500 a c k a g e s c a n b e i 0040520 m p o r t e d w h o l e s a l 0040540 e f r o m S p i c e , e x 0040560 c e p t f o r t h e s y m 0040600 b o l h a s h i n g c o d e 0040620 i t s e l f . S o m e p 0040640 e r f o r m a n c e t u n i n 0040660 g w i l l b e n e e d e d 0040700 . \r 2 . F i x t h e I n 0040720 t e r l i s p l i t a t o m 0040740 ( s y m b o l ) r e a d e r 0040760 a n d p r i n t e r . R e 0041000 a d e r n e e d s t o i n 0041020 t e r n s y m b o l s i n 0041040 t h e c u r r e n t p a c k 0041060 a g e a n d r e c o g n i z 0041100 e e x p l i c i t p a c k a 0041120 g e p r e f i x e s . T h 0041140 e I n t e r l i s p l i t a 0041160 t o m p r i n t e r n e e d 0041200 s t o p r i n t a p a c 0041220 k a g e p r e f i x i f t 0041240 h e s y m b o l i s n o t 0041260 i n t h e c u r r e n t 0041300 p a c k a g e . \r 3 . F 0041320 i x m a j o r i n c o m p a 0041340 t i b i l i t i e s . T h e 0041360 m o s t s i g n i f i c a n 0041400 t c h a n g e i s t o t 0041420 h e f i l e p a c k a g e 0041440 s o f t w a r e , w h i c h 0041460 n e e d s t o r e c o g n i 0041500 z e t h e p a c k a g e e 0041520 n v i r o n m e n t i n w h 0041540 i c h t o r e a d o r w 0041560 r i t e a f i l e . T h 0041600 i s n e e d n o t b e d 0041620 o n e i m m e d i a t e l y , 0041640 b u t s o m e t h i n g s 0041660 h o u l d b e i n p l a c 0041700 e r e l a t i v e l y s o o 0041720 n t o h e l p d e v e l o 0041740 p m e n t . \r T h e I N T E R 0041760 L I S P p a c k a g e s h o 0042000 u l d b e s e t u p t o 0042020 i n h e r i t a l l c o m 0042040 p a t i b l e s y m b o l s 0042060 o f t h e C o m m o n L i 0042100 s p p a c k a g e L I S P . 0042120 T h e C o m m o n L i s 0042140 p p a c k a g e s h o u l d 0042160 n o t i n h e r i t f r o 0042200 m t h e I N T E R L I S P 0042220 p a c k a g e b y d e f a u 0042240 l t . \r M u l t i p l e v a l 0042260 u e s \r C o m m o n L i s p 0042300 a l l o w s f u n c t i o n s 0042320 t o r e t u r n m o r e 0042340 t h a n o n e v a l u e . 0042360 T h e d i f f i c u l t a 0042400 s p e c t o f t h i s f e 0042420 a t u r e i s t h a t i f 0042440 a r e c e i v i n g f u n 0042460 c t i o n e x p e c t s a 0042500 s i n g l e v a l u e , t h 0042520 e n t h e a d d i t i o n a 0042540 l o n e s a r e i n v i s 0042560 i b l y d i s c a r d e d . 0042600 T h u s , a n y g o o d 0042620 d e s i g n r e q u i r e s 0042640 t h a t t h e p e r f o r m 0042660 a n c e o f o r d i n a r y 0042700 s i n g l e - v a l u e d f 0042720 u n c t i o n s n o t b e 0042740 a f f e c t e d . B e c a u 0042760 s e t h e C o m m o n L i 0043000 s p l a n g u a g e f u n c 0043020 t i o n s u s e m u l t i p 0043040 l e v a l u e s t h e m s e 0043060 l v e s , o v e r a l l s y 0043100 s t e m p e r f o r m a n c e 0043120 w o u l d b e s e v e r e 0043140 l y i m p a c t e d i f t 0043160 h e p e r f o r m a n c e o 0043200 f t h i s f e a t u r e w 0043220 e r e p o o r . \r A h i g h 0043240 p e r f o r m a n c e d e s 0043260 i g n f o r t h i s f e a 0043300 t u r e e x i s t s w i t h 0043320 i n C M U ' s S p i c e m 0043340 i c r o c o d e . H o w e v 0043360 e r , a s l i g h t l y l 0043400 o w e r p e r f o r m a n c e 0043420 b u t s i m p l e r t o 0043440 i m p l e m e n t v e r s i o 0043460 n h a s b e e n d e s i g 0043500 n e d l o c a l l y , w h i 0043520 c h p u t s m o s t o f 0043540 t h e w o r k i n l i s p 0043560 f o r m u l t i p l e - v a 0043600 l u e f u n c t i o n r e t 0043620 u r n , t h o u g h i t i 0043640 s a s s i s t e d b y s o 0043660 m e s i m p l e m i c r o c 0043700 o d e . S o m e c o m p i 0043720 l e r w o r k w i l l b e 0043740 n e e d e d . P e r f o r 0043760 m a n c e t u n i n g o r 0044000 a r e i m p l e m e n t a t i 0044020 o n o f t h i s f e a t u 0044040 r e a t s o m e p o i n t 0044060 m a y b e a p p r o p r i 0044100 a t e . \r T h i s i t e m , 0044120 t o o , h a s i n t e g r a 0044140 t i o n i s s u e s . C h 0044160 a n g e s w i l l b e n e 0044200 e d e d t o e n v i r o n m 0044220 e n t a l t o o l s w h i c 0044240 h d i s p l a y o r s a v 0044260 e t h e v a l u e s ( p r 0044300 e v i o u s l y a s i n g l 0044320 e v a l u e ) r e t u r n e 0044340 d b y f u n c t i o n c a 0044360 l l s , s u c h a s t h e 0044400 d e b u g g e r ' s s t a c 0044420 k d i s p l a y m e c h a n 0044440 i s m , t o s h o w f u n 0044460 c t i o n s t h a t e x p e 0044500 c t t o r e c e i v e m u 0044520 l t i p l e v a l u e s , a 0044540 n d h i s t o r y l i s t s 0044560 . S p e c i f i c a l l y , 0044600 e x t e n s i o n s t o B 0044620 R E A K , A D V I S E a n d 0044640 o t h e r s w i l l b e 0044660 n e e d e d . \r L e x i c a l 0044700 s c o p i n g a n d c l o s 0044720 u r e s \r T h i s i s b y 0044740 f a r t h e m o s t d i f 0044760 f i c u l t l a n g u a g e 0045000 f e a t u r e t o i m p l e 0045020 m e n t . \r C o m m o n L i s 0045040 p i s b y d e f a u l t 0045060 l e x i c a l l y s c o p e d 0045100 . I n p r a c t i c a l 0045120 t e r m s , t h i s m e a n 0045140 s t h a t v a r i a b l e s 0045160 , b l o c k s a n d t a g 0045200 s t h a t a r e l e x i c 0045220 a l l y a p p a r e n t t o 0045240 s o m e p i e c e o f c 0045260 o d e a r e a c c e s s i b 0045300 l e t o i t , e v e n i 0045320 f t h e c o d e a n d t 0045340 h e v a r i a b l e a r e 0045360 d y n a m i c a l l y s e p a 0045400 r a t e d b y v i r t u e 0045420 o f , f o r e x a m p l e , 0045440 t h e c o d e b e i n g 0045460 i n s i d e a F U N C T I O 0045500 N c o n s t r u c t p a s s 0045520 e d t o a n o t h e r f u 0045540 n c t i o n . L e x i c a l 0045560 l y s c o p e d F U N C T I 0045600 O N s a r e s o m e t i m e 0045620 s c a l l e d " l e x i c a 0045640 l c l o s u r e s . " \r W e 0045660 h a v e a p r e l i m i n a 0045700 r y d e s i g n t h a t w 0045720 i l l r e q u i r e e x p a 0045740 n s i o n i n s e v e r a l 0045760 a r e a s . T h e c o m 0046000 p l e t e d d e s i g n w i 0046020 l l h a v e t o c o v e r 0046040 t h r e e a r e a s i n 0046060 t h i s f e a t u r e s : c 0046100 o m p i l a t i o n , i n t e 0046120 r p r e t a t i o n a n d r 0046140 u n t i m e s u p p o r t . 0046160 C o m p i l a t i o n w i l 0046200 l n e e d t o s p e c i a 0046220 l l y t r e a t v a r i a b 0046240 l e s , G O s a n d t h e 0046260 c r e a t i o n o f c l o 0046300 s u r e s . T h e i n t e 0046320 r p r e t e r ' s s u p p o r 0046340 t f o r l e x i c a l s c 0046360 o p i n g , a n d i t s i 0046400 n t e r f a c e t o l o w 0046420 l e v e l s u p p o r t w i 0046440 l l h a v e a b a s i s 0046460 i n t h e e x i s t i n g 0046500 S p i c e i n t e r p r e t e 0046520 r . R u n t i m e s u p p 0046540 o r t w i l l i n c l u d e 0046560 d i s p a t c h i n g o n 0046600 F U N C A L L o f a c l o 0046620 s u r e o b j e c t , R E T 0046640 U R N - F R O M c a l l f r 0046660 a m e s w i t h c l o s u r 0046700 e p o i n t e r s , e t c . 0046720 \r I n t e r p r e t e r \r T h e 0046740 i n t e r p r e t e r n e e 0046760 d s t o h a n d l e C o m 0047000 m o n L i s p s t y l e l 0047020 a m b d a s a n d s p e c i 0047040 a l f o r m s , a n d o b 0047060 e y l e x i c a l i t y . \r I 0047100 n i t i a l l y w e w i l l 0047120 i m p o r t t h e i n t e 0047140 r p r e t e r a v a i l a b l 0047160 e i n S p i c e L i s p , 0047200 w h i c h i m p l e m e n t 0047220 s l e x i c a l e n v i r o 0047240 n m e n t s i n a s l o w 0047260 b u t s a f e m a n n e r 0047300 . T h i s i n t e r p r e 0047320 t e r w i l l b e n e f i t 0047340 f r o m p e r f o r m a n c 0047360 e t u n i n g a t s o m e 0047400 p o i n t . L a t e r , 0047420 w e w i l l i n v e s t i g 0047440 a t e c o m p i l e r b a s 0047460 e d s o l u t i o n s , s u 0047500 c h a s h a v i n g E V A 0047520 L c o m p i l e f u n c t i 0047540 o n s a s t h e y ' r e d 0047560 e f i n e d , a n d i n a 0047600 m a n n e r t h a t l e a 0047620 v e s p r o g r a m s t a t 0047640 e a c c e s s i b l e f o r 0047660 d e b u g g i n g . \r C o 0047700 n t r o l c o n s t r u c t s 0047720 \r A s a c o n s e q u e n c 0047740 e o f f r e e i n t e r c 0047760 a l l i n g , e r r o r s i 0050000 n c u r r e d u n d e r I n 0050020 t e r l i s p a n d C o m m 0050040 o n L i s p m u s t r e s 0050060 p e c t e a c h o t h e r ' 0050100 s e r r o r c a t c h i n g 0050120 m e c h a n i s m s . A l 0050140 t h o u g h S p i c e c o d 0050160 e e x i s t s , t h e c o 0050200 n t r o l c o n s t r u c t s 0050220 a r e p e r f o r m a n c e 0050240 - c r i t i c a l a n d t h 0050260 e h i g h e r l e v e l f 0050300 e a t u r e s m u s t b e 0050320 b u i l t a t o p a s e t 0050340 o f p e r f o r m a n c e 0050360 o r i e n t e d c h a n g e s 0050400 t o t h e I n t e r l i s 0050420 p e r r o r m e c h a n i s 0050440 m . T h e s e c h a n g e 0050460 s w i l l a l l o w i m p 0050500 r o v e d v e r s i o n s o 0050520 f t h e I n t e r l i s p 0050540 e r r o r f u n c t i o n s 0050560 t o b e c o n s t r u c t e 0050600 d a s w e l l . A p r 0050620 e l i m i n a r y ( b u t f 0050640 l a w e d ) i m p l e m e n t 0050660 a t i o n o f a l o w l 0050700 e v e l e r r o r m e c h a 0050720 n i s m h a s b e e n d o 0050740 n e b y H e n r y T h o m 0050760 p s o n . \r 3 . 5 F e a t u r 0051000 e s r e q u i r i n g i n t 0051020 e g r a t i o n o r s m a l 0051040 l m o d i f i c a t i o n s \r 0051060 T h e s e f e a t u r e s a 0051100 l l o w t h e S p i c e s 0051120 o u r c e s t o b e u s e 0051140 d f o r p a r t o f t h 0051160 e i r i m p l e m e n t a t i 0051200 o n , b u t s o m e s y s 0051220 t e m - d e p e n d e n t c a 0051240 r e n e e d s t o b e a 0051260 p p l i e d . \r F i l e s y s 0051300 t e m i n t e r f a c e a n 0051320 d p a t h n a m e s \r I n t e 0051340 r l i s p h a s a r i c h 0051360 s e t o f f i l e s y s 0051400 t e m a n d s t r e a m o 0051420 p e r a t i o n s . T h e 0051440 C o m m o n L i s p f u n c 0051460 t i o n s c a n l a r g e l 0051500 y b e i m p l e m e n t e d 0051520 w i t h c a l l s i n t o 0051540 t h e e x i s t i n g I n 0051560 t e r l i s p c o d e . H 0051600 o w e v e r , t h e f u n c 0051620 t i o n O P E N h a s n o 0051640 d i r e c t a n a l o g u e 0051660 ; h e n c e , w e s h o u 0051700 l d e x t e n d I n t e r l 0051720 i s p ' s O P E N S T R E A M 0051740 . T h e p a t h n a m e 0051760 f u n c t i o n s t h e m s e 0052000 l v e s w i l l b e i m p 0052020 o r t e d f r o m t h e e 0052040 x t e r n a l C o m m o n L 0052060 i s p s o u r c e s . T h 0052100 e r e a r e n o d i f f i 0052120 c u l t d e s i g n d e c i 0052140 s i o n s o r h a r d i s 0052160 s u e s i n t h e i m p l 0052200 e m e n t a t i o n o f t h 0052220 i s f e a t u r e . \r S t r e 0052240 a m s \r C o m m o n L i s p 0052260 h a s s e v e r a l k i n d 0052300 s o f s t r e a m s n o t 0052320 f o u n d i n I n t e r l 0052340 i s p ( s y n o n y m , b r 0052360 o a d c a s t , c o n c a t e 0052400 n a t e d ) ; t h e y c a n 0052420 l a r g e l y b e i m p l 0052440 e m e n t e d i n t e r m s 0052460 o f I n t e r l i s p s t 0052500 r e a m s . P e r f o r m a 0052520 n c e o f a n y o f t h 0052540 e s e f a n c y s t r e a m 0052560 s i s u n l i k e l y t o 0052600 b e g o o d . B u t t 0052620 h e i m p o r t a n t k i n 0052640 d s o f o r d i n a r y c 0052660 h a r a c t e r s t r e a m s 0052700 ( d i s p l a y , f i l e ) 0052720 a r e e s s e n t i a l l y 0052740 u n c h a n g e d f r o m 0052760 I n t e r l i s p s t r e a m 0053000 s . I n t e g r a t i o n 0053020 i s s u e s w i l l a r i s 0053040 e i n t h e g l o b a l 0053060 C o m m o n L i s p s t r e 0053100 a m s s u c h a s * t e r 0053120 m i n a l - i o * , b u t t 0053140 h e s e a r e n o t e s p 0053160 e c i a l l y d i f f i c u l 0053200 t . W e p l a n t o b 0053220 u i l d o n S t a n L a n 0053240 n i n g ' s p r e l i m i n a 0053260 r y i m p l e m e n t a t i o 0053300 n o f C o m m o n L i s p 0053320 s t r e a m s , w h i c h 0053340 c u r r e n t l y c o n t a i 0053360 n s a b o u t 6 0 % o f 0053400 t h e C o m m o n L i s p 0053420 e x t e n d e d s t r e a m 0053440 f u n c t i o n a l i t y . \r R 0053460 e a d e r / P r i n t e r \r C o 0053500 m m o n L i s p ' s r e a d 0053520 e r a n d p r i n t e r b 0053540 e h a v e d i f f e r e n t l 0053560 y f r o m I n t e r l i s p 0053600 ' s , a n d i n p a r t i 0053620 c u l a r s u p p o r t a 0053640 l a r g e s e t o f r e a 0053660 d e r m a c r o s . T h e 0053700 r e a r e a l s o p e r f 0053720 o r m a n c e i s s u e s i 0053740 n v o l v e d i n t h e e 0053760 x i s t e n c e o f d y n a 0054000 m i c a l l y b o u n d v a 0054020 r i a b l e s * r e a d - b a 0054040 s e * , * p a c k a g e * a 0054060 n d o t h e r s t h a t a 0054100 f f e c t t h e s e m a n t 0054120 i c s o f t h e r e a d e 0054140 r . W e w i l l i m p o 0054160 r t a n d a d a p t t h e 0054200 r e a d e r a n d p r i n 0054220 t e r f r o m e x t e r n a 0054240 l C o m m o n L i s p s o 0054260 u r c e s . 1 6 b i t N 0054300 S c h a r a c t e r c o d e 0054320 s w i l l n e e d t o b 0054340 e i n t e g r a t e d w i t 0054360 h t h e r e a d e r a n d 0054400 p r i n t e r a t t h e i 0054420 r l o w e s t l e v e l s . 0054440 A s w i t c h w i l l 0054460 b e i n s t a l l e d i n 0054500 t h e I n t e r l i s p r e 0054520 a d e r a n d p r i n t e r 0054540 , w h i c h w i l l c a u 0054560 s e t h e m t o u s e t 0054600 h e C o m m o n L i s p r 0054620 e a d e r o r p r i n t e r 0054640 w h e n g i v e n a C o 0054660 m m o n L i s p s t y l e 0054700 r e a d t a b l e a s a n 0054720 a r g u m e n t . \r A t s o 0054740 m e p o i n t i n f u t u 0054760 r e , t h e C o m m o n L 0055000 i s p r e a d e r s e m a n 0055020 t i c s w i l l c a u s e 0055040 u s t o f a c e a n i n 0055060 t e g r a t i o n i s s u e : 0055100 i n o r d e r t o i n c 0055120 l u d e t h e c o n c e p t 0055140 o f " r e a d - t i m e " 0055160 m a c r o s a n d e v a l u 0055200 a t i o n a r e s i d e n t 0055220 i a l e d i t i n g e n v i 0055240 r o n m e n t r e q u i r e s 0055260 a m e c h a n i s m f o r 0055300 a c t u a l l y r e a d i n 0055320 g o r i n s t a l l i n g 0055340 a d e f i n i t i o n w h i 0055360 l e p r e s e r v i n g t h 0055400 e s y n t a c t i c f o r m 0055420 o f t h e s o u r c e f 0055440 o r e d i t i n g a n d p 0055460 r e s e n t a t i o n . \r H a s 0055500 h t a b l e s \r T h e n e c 0055520 e s s a r y f u n c t i o n a 0055540 l i t y m o s t l y e x i s 0055560 t s i n I n t e r l i s p 0055600 a l r e a d y , e x c e p t 0055620 t h a t i t r e q u i r e s 0055640 a s m a l l m o d i f i c 0055660 a t i o n t o a l l o w N 0055700 I L a s a v a l u e . 0055720 T h e m a j o r u n i m p l 0055740 e m e n t e d i t e m i s 0055760 t h e f u n c t i o n S X H 0056000 A S H , n e e d e d a s a 0056020 f u n c t i o n i n i t s 0056040 o w n r i g h t a n d i 0056060 n o r d e r t o i m p l e 0056100 m e n t E Q U A L h a s h 0056120 t a b l e s . A n i m p l 0056140 e m e n t a t i o n f r o m 0056160 S p i c e c o d e e x i s t 0056200 s , a n d w i l l b e i 0056220 m p o r t e d f o r t h e 0056240 i n i t i a l r e l e a s e . 0056260 A g o o d i m p l e m e 0056300 n t a t i o n o f t h e S 0056320 X H A S H f u n c t i o n w 0056340 o u l d b e q u i t e m a 0056360 c h i n e - d e p e n d e n t 0056400 ( f o r s p e e d ) , a n d 0056420 t h u s s o m e m i n o r 0056440 p e r f o r m a n c e t u n 0056460 i n g a t a l a t e r d 0056500 a t e i s c a l l e d f o 0056520 r . \r T y p e s y s t e m \r T 0056540 h e r e i s a n e a r l y 0056560 c o m p l e t e i m p l e m 0056600 e n t a t i o n o f t h e 0056620 C o m m o n L i s p t y p e 0056640 s y s t e m i n C M L n 0056660 o w . T h e f i n a l f 0056700 e a t u r e s o f t h i s 0056720 s y s t e m c a n b e i m 0056740 p o r t e d f r o m o t h e 0056760 r C o m m o n L i s p s o 0057000 u r c e s . \r S E T F \r T h i s 0057020 i s a l a r g e a n d 0057040 c o m p l e x s y s t e m t 0057060 o i m p l e m e n t i n i 0057100 t s e n t i r e t y . A n 0057120 i m p l e m e n t a t i o n 0057140 o f i t w i t h g o o d 0057160 p e r f o r m a n c e , o r 0057200 o n e w h i c h p r o d u c 0057220 e s g o o d c o d e , c a 0057240 u s e s i n t e g r a t i o n 0057260 i s s u e s t o a r i s e 0057300 . W e w i l l i m p o r 0057320 t a n d a d a p t t h e 0057340 i m p l e m e n t a t i o n i 0057360 n t h e e x t e r n a l C 0057400 o m m o n L i s p s o u r c 0057420 e s . \r 3 . 6 N e w f e a t 0057440 u r e s \r M a n y C o m m o n 0057460 L i s p f e a t u r e s a 0057500 r e h i g h l e v e l e n 0057520 o u g h t h a t t h e y a 0057540 r e i n d e p e n d e n t o 0057560 f t h e r e s t o f t h 0057600 e s y s t e m . T h e s e 0057620 c a n b e i m p o r t e d 0057640 f a i r l y e a s i l y f 0057660 r o m a n e x t e r n a l 0057700 s e t o f C o m m o n L i 0057720 s p s o u r c e s . \r C e r t 0057740 a i n p r i m i t i v e d a 0057760 t a t y p e s , s u c h a s 0060000 c o m p l e x n u m b e r s 0060020 a n d r a t i o s , s h o 0060040 u l d b e i n t e g r a t e 0060060 d i n t o t h e a r i t h 0060100 m e t i c c o d e a t a 0060120 l o w l e v e l . T r a n 0060140 s c e n d e n t a l f u n c t 0060160 i o n s s u c h a s S I N 0060200 , C O S , e t c . m u s t 0060220 b e m a d e t o w o r k 0060240 f o r c o m p l e x n u m 0060260 b e r s . I n t e g r a t i 0060300 o n o f t h e s e f e a t 0060320 u r e s i n t o I n t e r l 0060340 i s p w o u l d t a k e a 0060360 f a i r a m o u n t o f 0060400 e f f o r t . I n s t e a d 0060420 , t r a n s p o r t o f a 0060440 n o t h e r C o m m o n L i 0060460 s p s y s t e m ' s h i g h 0060500 l e v e l a r i t h m e t i 0060520 c c o d e i s r e c o m m 0060540 e n d e d . A t i t s l 0060560 o w e r l e v e l s t h i s 0060600 c o d e w i l l c a l l 0060620 i n t o I n t e r l i s p ' s 0060640 p r i m i t i v e a r i t h 0060660 m e t i c o p e r a t o r s . 0060700 \r 3 . 7 C o m p l e t e d f 0060720 e a t u r e s \r T h e s e f e 0060740 a t u r e s h a v e a l r e 0060760 a d y b e e n s u b s t a n 0061000 t i a l l y i m p l e m e n t 0061020 e d i n t h e C M L l i 0061040 b r a r y p a c k a g e . 0061060 T h i s s e c t i o n d e s 0061100 c r i b e s t h e m a n d 0061120 i n d i c a t e s w h e r e 0061140 p e r f o r m a n c e i m p r 0061160 o v e m e n t m a y b e p 0061200 o s s i b l e . O u r e x 0061220 p e r i e n c e h e r e c a 0061240 n b e u s e d a s a c 0061260 h e c k o n t h e e s t i 0061300 m a t e s o f d e v e l o p 0061320 m e n t e f f o r t f o r 0061340 t h e r e s t o f t h e 0061360 p r o j e c t . \r A r r a y s \r 0061400 C o m m o n L i s p s t y l 0061420 e a r r a y s s u p p o r t 0061440 u n u s u a l f e a t u r e 0061460 s a n d a r e a c e n t 0061500 e r o f a t t e n t i o n 0061520 i n t h e p e r f o r m a n 0061540 c e a r e n a . W e c u 0061560 r r e n t l y h a v e a n 0061600 i m p l e m e n t a t i o n w 0061620 h i c h i s c o m p l e t e 0061640 , b u t n e e d s m i c r 0061660 o c o d e t o i m p r o v e 0061700 p e r f o r m a n c e . \r C h 0061720 a r a c t e r s \r W e h a v e 0061740 a c o m p l e t e i m p l 0061760 e m e n t a t i o n o f t h 0062000 e c h a r a c t e r d a t a 0062020 t y p e . \r B i g n u m s \r T h 0062040 e s e w e r e i m p l e m e 0062060 n t e d l a s t y e a r b 0062100 y L a r r y M a s i n t e r 0062120 . \r D e f s t r u c t \r T h e r 0062140 e i s c u r r e n t l y a 0062160 v e r s i o n o f D E F S 0062200 T R U C T w h i c h i s i 0062220 n t e g r a t e d w i t h t 0062240 h e I n t e r l i s p R E C 0062260 O R D p a c k a g e . I n 0062300 f u t u r e , a n i m p r 0062320 o v e d v e r s i o n o f 0062340 t h i s f e a t u r e c o u 0062360 l d b e i m p o r t e d f 0062400 r o m e x t e r n a l C o m 0062420 m o n L i s p s o u r c e s 0062440 . T h e b o t t o m e n 0062460 d o f t h i s D E F S T R 0062500 U C T c o d e w o u l d n 0062520 e e d t o b e i n t e r f 0062540 a c e d t o t h e D E C L 0062560 A R E D A T A T Y P E a n d 0062600 a r r a y a c c e s s m e c 0062620 h a n i s m s i n I n t e r 0062640 l i s p . \r S t r i n g s a n 0062660 d s e q u e n c e s \r T h e 0062700 c o m p l e t e s e t o f 0062720 s t r i n g a n d s e q u e 0062740 n c e f u n c t i o n s w e 0062760 r e t r a n s p o r t e d i 0063000 n t o t h e C M L p a c k 0063020 a g e b y K e l l y R o a 0063040 c h a n d d e b u g g e d 0063060 b y R o n F i s c h e r . 0063100 T h e y c o u l d u s e 0063120 c o m p i l e r s u p p o r t 0063140 o f s o m e s o r t , b 0063160 u t t h i s c a n w a i t 0063200 . \r M a c r o s \r D E F M A C R 0063220 O e t a l . a r e l a r 0063240 g e l y c o m p l e t e , e 0063260 x c e p t t h a t C o m m o 0063300 n L i s p d o e s n o t 0063320 a l l o w a s y m b o l t 0063340 o h a v e b o t h a f u 0063360 n c t i o n d e f i n i t i o 0063400 n a n d m a c r o d e f i 0063420 n i t i o n , a f e a t u r 0063440 e t y p i c a l l y u s e d 0063460 i n I n t e r l i s p f o 0063500 r o p t i m i z a t i o n ( 0063520 t h o u g h u s e d m o r e 0063540 h e a v i l y i n I n t e 0063560 r l i s p - 1 0 t h a n - D 0063600 ) . T h i s i s a n i 0063620 n t e g r a t i o n i s s u e 0063640 w h i c h c a n , f o r 0063660 t h e m o s t p a r t , b 0063700 e a v o i d e d b y c a u 0063720 s i n g t h e C o m m o n 0063740 L i s p v e r s i o n s o f 0063760 D E F M A C R O a n d D E 0064000 F U N t o d e s t r o y e 0064020 x i s t i n g d e f i n i t i 0064040 o n s o n t h e s y m b o 0064060 l b e f o r e i n s t a l l 0064100 i n g t h e i r o w n . 0064120 A p p r o p r i a t e w a r n 0064140 i n g s c a n b e i s s u 0064160 e d . T h e I n t e r l i 0064200 s p v e r s i o n o f D E 0064220 F M A C R O , w h i c h a l 0064240 r e a d y e x i s t s , c a 0064260 n c o n t i n u e t o p l 0064300 a c e m a c r o d e f i n i 0064320 t i o n s o n t o l i t a t 0064340 o m s a d d i t i v e l y . \r 0064360 F u n c t i o n c a l l a n 0064400 d L A M B D A l i s t s \r T 0064420 h e s e a r e c u r r e n t 0064440 l y i m p l e m e n t e d i 0064460 n a s i m p l e w a y u 0064500 s i n g L A M B D A T R A N , 0064520 b u t t h e p e r f o r m 0064540 a n c e a n d i n t e g r a 0064560 t i o n l e v e l s a r e 0064600 l o w . T h e d e b u g g 0064620 e r f o r i n s t a n c e , 0064640 d o e s n o t k n o w e 0064660 n o u g h a b o u t t h e 0064700 f o r m a t o f t h e a r 0064720 g u m e n t s o f t h e s e 0064740 f u n c t i o n s t o d i 0064760 s p l a y t h e m i n a 0065000 b r e a k . W e w i l l 0065020 i n i t i a l l y i m p r o v 0065040 e t h e p e r f o r m a n c 0065060 e o f t h i s s i m p l e 0065100 s c h e m e , l e a v i n g 0065120 a f u l l y m i c r o c o 0065140 d e d c o m p l e x f u n c 0065160 t i o n e n t r y f o r l 0065200 a t e r . S u c h a m e 0065220 c h a n i s m w o u l d n e 0065240 e d t o b e d i f f e r e 0065260 n t l y h a n d l e d a n d 0065300 b e m a d e k n o w n t 0065320 o t h e I n t e r l i s p 0065340 c o m p i l e r t o g a i n 0065360 h i g h p e r f o r m a n c 0065400 e . T h e c o m p i l e r 0065420 w o r k w o u l d b e s 0065440 e r i o u s . \r S y m b o l f 0065460 u n c t i o n s \r A s i m p l 0065500 e s e t o f s y m b o l 0065520 s l o t f u n c t i o n s , 0065540 i n c l u d i n g a s i m u 0065560 l a t i o n o f t h e p a 0065600 c k a g e s l o t , c u r r 0065620 e n t l y e x i s t s a s 0065640 p a r t o f t h e w o r k 0065660 o n s y m b o l p a c k a 0065700 g e s . \r L i s t f u n c t i 0065720 o n s \r T h e p r i m i t i v 0065740 e l i s t o p e r a t i o n 0065760 s , o f t e n i d e n t i c 0066000 a l i n f u n c t i o n a l 0066020 i t y , i f n o t n a m e 0066040 , t o I n t e r l i s p ' s 0066060 , h a v e a l r e a d y b 0066100 e e n t r a n s p o r t e d 0066120 i n t o t h e C M L p a c 0066140 k a g e f r o m S p i c e . 0066160 \r 4 . D e t a i l e d e 0066200 s t i m a t e s \r W e n o w 0066220 t u r n t o a n e v a l u 0066240 a t i o n o f t h e a m o 0066260 u n t o f t i m e r e q u 0066300 i r e d t o i m p l e m e n 0066320 t a X e r o x C o m m o n 0066340 L i s p p r o d u c t f o 0066360 l l o w i n g t h i s p l a 0066400 n . I n e a c h o f t 0066420 h e t h r e e c a t e g o r 0066440 i e s , t h e e s t i m a t 0066460 e d t i m e d o e s n o t 0066500 i n c l u d e f o r m a l 0066520 t e s t i n g b e y o n d t 0066540 h a t r e q u i r e d f o r 0066560 d e v e l o p m e n t . W 0066600 e e x p e c t t h a t a n 0066620 e n g i n e e r i n g , d o 0066640 c u m e n t a t i o n a n d 0066660 r e l e a s e s c h e d u l e 0066700 w i l l b e p r e p a r e 0066720 d b y t h e a p p r o p r 0066740 i a t e f u n c t i o n a l 0066760 g r o u p s t o c o m p l e 0067000 m e n t t h i s p r o p o s 0067020 a l . \r T h e f o l l o w i n 0067040 g e s t i m a t e s a r e 0067060 b a s e d o n b o t h a 0067100 l i n e s o f c o d e p e 0067120 r h o u r f i g u r e , a 0067140 n d , f o r t h o s e p a 0067160 r t s o f t h e s y s t e 0067200 m w h e r e n o e x a m p 0067220 l e c o d e e x i s t s , 0067240 e x p e r t o p i n i o n b 0067260 a s e d o n a n a l y s i s 0067300 o f t h e p r o b l e m . 0067320 T h e s i z e e s t i m 0067340 a t e s f o r t h e v a r 0067360 i o u s f e a t u r e s c o 0067400 m e f r o m a n a l y s i s 0067420 o f t h e r e l e v a n t 0067440 S p i c e L i s p s o u r 0067460 c e s . I n s e v e r a l 0067500 c a s e s , s p e c i f i c 0067520 p e o p l e a r e c o m m 0067540 i t t e d t o s p e c i f i 0067560 c p r o j e c t s w h e r e 0067600 t h e i r s k i l l s a r 0067620 e u n i q u e l y a p p r o 0067640 p r i a t e . \r T h e c o d e 0067660 t r a n s p o r t e s t i m 0067700 a t e s b e g i n w i t h 0067720 t h e i n d u s t r y s t a 0067740 n d a r d o f 3 0 m i n u 0067760 t e s p e r l i n e o f 0070000 ( n e w ) c o d e . U s i 0070020 n g a s t a n d a r d l i 0070040 f e c y c l e d i v i s i o 0070060 n i n t o 3 m i n u t e s 0070100 t o d e s i g n , 6 m i 0070120 n u t e s t o c o d e , 6 0070140 m i n u t e s t o i n t e 0070160 g r a t e a n d 1 5 m i n 0070200 u t e s t o t u n e a n d 0070220 m a i n t a i n , w e a r 0070240 r i v e a t a f i g u r e 0070260 o f a b o u t 1 5 m i n 0070300 u t e s t o c r e a t e a 0070320 l i n e o f c o d e ( i 0070340 . e . , d e s i g n , c o d 0070360 e a n d i n t e g r a t e ) 0070400 o r a r a t e o f 4 0070420 l i n e s / h o u r . W 0070440 e w i l l v a r y t h i s 0070460 " b a s e l i n e " r a t e 0070500 f o r s o m e o f t h e 0070520 s u b t a s k s , i f t h 0070540 e y a r e o f u n u s u a 0070560 l l y ( h i g h o r l o w 0070600 ) d i f f i c u l t y . T h 0070620 u s , i f a t a s k i s 0070640 a c l e a r l y i n d e p 0070660 e n d e n t , s i m p l e p 0070700 o r t f o r w h i c h c o 0070720 n s i d e r a b l e s t r u c 0070740 t u r e a l r e a d y e x i 0070760 s t s i n t h e I n t e r 0071000 l i s p s y s t e m , w e 0071020 m a y e s t i m a t e t h a 0071040 t a s m a n y a s 8 l 0071060 i n e s / h o u r c o u l 0071100 d b e a c h i e v e d , w 0071120 h e r e a s a d e t a i l e 0071140 d l o w - l e v e l r e i m 0071160 p l e m e n t a t i o n m a y 0071200 l i m i t u s t o n o 0071220 m o r e t h a n 2 l i n e 0071240 s / h o u r . \r 4 . 1 C r 0071260 i t i c a l f e a t u r e s \r 0071300 T h e s e f e a t u r e s w 0071320 i l l r e q u i r e c o n s 0071340 i d e r a b l e c o o r d i n 0071360 a t i o n w i t h I n t e r 0071400 l i s p i n t e r n a l s . 0071420 M o s t o f t h e m w 0071440 i l l r e q u i r e I n t e 0071460 r l i s p e x p e r t s f o 0071500 r t h e i r d e s i g n a 0071520 n d i m p l e m e n t a t i o 0071540 n . \r P a c k a g e s \r T h i s 0071560 f e a t u r e w i l l r e 0071600 q u i r e b o t h t r a n s 0071620 p o r t i n g t h e s o u r 0071640 c e c o d e f o r a n e 0071660 x i s t i n g p a c k a g e , 0071700 a n d a f e w c h a n g 0071720 e s t o I n t e r l i s p ' 0071740 s r e a d e r a n d p r i 0071760 n t e r a n d f i l e p a 0072000 c k a g e . T h e S p i c 0072020 e L i s p s o u r c e s d 0072040 e v o t e 7 4 4 l i n e s 0072060 o f c o d e t o t h i s 0072100 f e a t u r e , t h u s r e 0072120 q u i r i n g 9 3 h o u r s 0072140 ( 2 . 3 w e e k s ) o f 0072160 a n o n - e x p e r t t o 0072200 t r a n s p o r t t h e u n 0072220 i n t e g r a t e d f u n c t 0072240 i o n a l i t y ( a t 8 l 0072260 i n e s / h o u r ) , p l 0072300 u s a n a d d i t i o n a l 0072320 3 w e e k s o f a n e 0072340 x p e r t p r o g r a m m e r 0072360 t o i n t e g r a t e i t 0072400 i n t o t h e I n t e r l 0072420 i s p r e a d e r / p r i n t 0072440 e r a n d f i l e p a c k 0072460 a g e . \r 2 . 3 w e e k s o 0072500 f a l i s p p r o g r a m 0072520 m e r , t o t r a n s p o r 0072540 t t h e c o d e . \r 3 w e 0072560 e k s o f o n e e x p e r 0072600 t l i s p p r o g r a m m e 0072620 r , t o i n t e g r a t e 0072640 w i t h I n t e r l i s p . \r 0072660 S p i c e s o u r c e s t a 0072700 t i s t i c s : \r M a c r o s \t 0072720 C o n s t a n t s \t S t r u c t 0072740 u r e s \t F u n c t i o n s \t S 0072760 o u r c e \t C o m m e n t \t F i 0073000 l e n a m e \r 1 \r \r \t 5 \t 0 \t 2 0073020 \t 3 5 \t 9 6 1 \t 2 1 7 \t p a c k 0073040 a g e \t \r 1 \r \r T o t a l o f 0073060 7 4 4 l i n e s o f c o 0073100 d e ( e x c l u d i n g c o 0073120 m m e n t s ) . \r \r M u l t i p 0073140 l e v a l u e s \r S i n c e 0073160 t h e p r i m a r y e f f o 0073200 r t a s s o c i a t e d w i 0073220 t h h a n d l i n g m u l t 0073240 i p l e v a l u e s i s i 0073260 n t e g r a t i o n w i t h 0073300 t h e I n t e r l i s p r u 0073320 n - t i m e , t h i s t a s 0073340 k h a s b e e n e s t i m 0073360 a t e d f r o m a n e x i 0073400 s t i n g d e s i g n . I 0073420 t w i l l r e q u i r e 6 0073440 e x p e r t w e e k s 377 377 \0 0073460 \0 , \0 \0 w \0 i \0 t \0 h \0 377 \0 0073500 m i c r o c o d e s u p p o r 0073520 t r e q u i r e d f o r t 0073540 h e l a s t 2 w e e k s 0073560 o f b o t h d e s i g n a 0073600 n d i m p l e m e n t a t i o 0073620 n . \r 3 w e e k s o f t w 0073640 o e x p e r t l i s p p r 0073660 o g r a m m e r s , t o d e 0073700 s i g n a n d b u i l d l 0073720 i s p c o d e . \r 2 w e e k 0073740 s o f o n e m i c r o c o 0073760 d e r , t o f i n a l i z e 0074000 d e s i g n a n d b u i l 0074020 d m i c r o c o d e . \r L e x 0074040 i c a l i t y a n d c l o s 0074060 u r e s \r E f f o r t i n t 0074100 h i s a r e a f a l l s i 0074120 n t o t h e f o l l o w i n 0074140 g a r e a s : c o m p i l e 0074160 r , i n t e r p r e t e r , 0074200 a n d r u n t i m e . T h 0074220 e c o m p i l e r n e e d s 0074240 t o a n a l y z e G O s , 0074260 f r e e v a r i a b l e l 0074300 o o k u p , a n d t h e c 0074320 o n t e x t o f c l o s u r 0074340 e c r e a t i o n . T h e 0074360 i n t e r p r e t e r r e q 0074400 u i r e s a n i n t e r f a 0074420 c e t o t h e l e x i c a 0074440 l l o o k u p m e c h a n i 0074460 s m s , p l u s c a l l i n 0074500 g i n t o i t a n d c a 0074520 l l i n g o u t o f i t . 0074540 R u n t i m e s u p p o r 0074560 t n e e d e d w i l l b e 0074600 : F U N C A L L o f a c 0074620 l o s u r e , a n d R E T U 0074640 R N - F R O M . A s s i g n 0074660 i n g a b o u t o n e w e 0074700 e k o f a 2 p e r s o n 0074720 e x p e r t p r o g r a m m 0074740 i n g t e a m t o e a c h 0074760 o f t h e a b o v e 6 0075000 f e a t u r e s , w e a r r 0075020 i v e a t 1 2 m a n w e 0075040 e k s . T h e m a j o r 0075060 p a r t o f t h e d e s i 0075100 g n p h a s e w i l l b e 0075120 i n t h e f i r s t h a 0075140 l f o f t h i s t a s k , 0075160 a n d w e w i l l n e e 0075200 d a m i c r o c o d e r i 0075220 n t h e l a t t e r 3 w 0075240 e e k s . \r 1 2 m a n w e e 0075260 k s o f e x p e r t l i s 0075300 p p r o g r a m m i n g t o 0075320 d e s i g n a n d b u i l 0075340 d l i s p c o d e . \r 3 w 0075360 e e k s o f o n e m i c r 0075400 o c o d e r ( l a s t 3 w 0075420 e e k s o f a b o v e ) t 0075440 o d e s i g n a n d b u i 0075460 l d m i c r o c o d e . \r I n 0075500 t e r p r e t e r \r T h e i n 0075520 t e r p r e t e r r e q u i r 0075540 e s t h e t r a n s p o r t 0075560 o f a n e x i s t i n g 0075600 C o m m o n L i s p i n t e 0075620 r p r e t e r w i t h s o m 0075640 e i n t e g r a t i o n t o 0075660 a l l o w f o r c o m p l 0075700 e t e i n t e r c a l l i n g 0075720 . T h e S p i c e L i s 0075740 p s o u r c e s d e v o t e 0075760 1 3 1 3 l i n e s o f c 0076000 o d e t o t h e i n t e r 0076020 p r e t e r , w h i c h r e 0076040 q u i r e s 1 6 4 m a n h 0076060 o u r s o f n o n - e x p e 0076100 r t t i m e t o t r a n s 0076120 p o r t i t ( 4 . 1 m a n 0076140 w e e k s a t 8 l i n e 0076160 s / h o u r , a s i n t 0076200 e g r a t i o n i s n o t 0076220 c o m p r i s e d ) , p l u s 0076240 a n a d d i t i o n a l 4 0076260 m a n w e e k s o f e x 0076300 p e r t s ' t i m e t o i 0076320 n t e g r a t e i t f u l l 0076340 y . O n e w e e k o f 0076360 e x p e r t t e a m t i m e 0076400 i s h e l d a f t e r t 0076420 h e f r e e z e a g a i n s 0076440 t t h e c o n t i n g e n c 0076460 y o f p e r f o r m a n c e 0076500 i m p r o v e m e n t . \r 4 . 0076520 1 w e e k s o f o n e l 0076540 i s p p r o g r a m m e r , 0076560 t o t r a n s p o r t S p i 0076600 c e c o d e . \r 4 m a n w 0076620 e e k s o f e x p e r t p 0076640 r o g r a m m i n g t o i n 0076660 t e g r a t e w i t h I n t 0076700 e r l i s p . \r S p i c e s o 0076720 u r c e s t a t i s t i c s : 0076740 \r M a c r o s \t C o n s t a n t 0076760 s \t S t r u c t u r e s \t F u n 0077000 c t i o n s \t S o u r c e \t C o 0077020 m m e n t \t F i l e n a m e \r 1 0077040 \r \r \t 1 1 \t 4 \t 1 \t 6 8 \t 1 4 8 0077060 7 \t 1 7 4 \t e v a l \t \r 1 \r \r T 0077100 o t a l o f 1 3 1 3 l i n 0077120 e s o f c o d e ( e x c l 0077140 u d i n g c o m m e n t s ) . 0077160 \r C o n t r o l c o n s t r u 0077200 c t s \r A n d y D a n i e l s 0077220 i s c u r r e n t l y w o 0077240 r k i n g o n a n e w d 0077260 e s i g n a n d i m p l e m 0077300 e n t a t i o n o f t h e 0077320 e r r o r s y s t e m , a s 0077340 h e h a s e x p e r i e n 0077360 c e i n t h i s a r e a . 0077400 H i s s o f t w a r e w 0077420 i l l i n i t i a l l y u s 0077440 e l o w p e r f o r m a n c 0077460 e r o u t i n e s t o e m 0077500 u l a t e l o w l e v e l 0077520 s u p p o r t w i t h i n t 0077540 h e m i c r o c o d e . O 0077560 n c e h i s s o f t w a r e 0077600 i s c o m p l e t e , i s 0077620 s u e s r a i s e d i n i 0077640 t s p r o d u c t i o n w i 0077660 l l g u i d e L a r r y M 0077700 a s i n t e r , B i l l v a 0077720 n M e l l e a n d ( p r o b 0077740 a b l y ) D o n C h a r n l 0077760 e y i n t h e d e s i g n 0100000 o f i t s m i c r o c o d 0100020 e s u p p o r t . \r A s a 0100040 b a s i s f o r e s t i m a 0100060 t i o n , t h e S p i c e 0100100 s o u r c e s f o r t h e 0100120 e r r o r a n d c o n t r o 0100140 l s y s t e m c o n t a i n 0100160 s 5 5 7 l i n e s o f c 0100200 o d e . U s i n g a n c 0100220 o d i n g r a t e o f 2 0100240 l i n e s / h o u r t o 0100260 r e f l e c t t h e p r o j 0100300 e c t ' s c o m p l e x i t y 0100320 , i t s h o u l d r e q u 0100340 i r e A n d y D a n i e l s 0100360 7 w e e k s t o d e s i 0100400 g n a n d b u i l d t h e 0100420 h i g h l e v e l l i s p 0100440 c o d e f o r t h e C o 0100460 m m o n L i s p s i d e o 0100500 f t h e e r r o r s y s t 0100520 e m . I n a d d i t i o n , 0100540 2 w e e k s o f a n e 0100560 x p e r t t e a m , p l u s 0100600 a n e x p e r t m i c r o 0100620 c o d e r , w i l l b e n 0100640 e e d e d t o f i n a l i z 0100660 e t h e d e s i g n a n d 0100700 b u i l d t h e l o w e r 0100720 l e v e l s 377 377 \0 \0 o \0 f \0 0100740 \0 t \0 h \0 e \0 \0 e \0 r \0 r \0 0100760 o \0 r \0 \0 s \0 y \0 s \0 t \0 e \0 0101000 m 377 \0 . \r 7 w e e k s o f 0101020 A n d y D a n i e l s , t o 0101040 d e s i g n a n d b u i l 0101060 d h i g h e r l e v e l s 0101100 o f e r r o r m e c h a n i 0101120 s m . \r 4 m a n w e e k s 0101140 o f e x p e r t p r o g r a 0101160 m m e r s . \r 2 w e e k s o 0101200 f o n e e x p e r t m i c 0101220 r o c o d e r , t o d e s i 0101240 g n a n d b u i l d l o w 0101260 e r l e v e l s o f e r r 0101300 o r m e c h a n i s m . \r S p 0101320 i c e s o u r c e s t a t i 0101340 s t i c s : \r M a c r o s \t C o 0101360 n s t a n t s \t S t r u c t u r 0101400 e s \t F u n c t i o n s \t S o u 0101420 r c e \t C o m m e n t \t F i l e 0101440 n a m e \r 1 \r \r \t 3 \t 3 \t 0 \t 1 0101460 8 \t 5 2 4 \t 1 3 7 \t e r r o r \t 0101500 \r \t 7 \t 0 \t 0 \t 2 \t 2 3 6 \t 6 6 0101520 \t e r r o r m \t \r 1 \r \r T o t a 0101540 l o f 5 5 7 l i n e s o 0101560 f c o d e ( e x c l u d i n 0101600 g c o m m e n t s ) . \r 4 . 2 0101620 F e a t u r e s r e q u i r 0101640 i n g i n t e g r a t i o n 0101660 o r s m a l l c h a n g e s 0101700 \r T h e s e f e a t u r e s 0101720 w i l l r e q u i r e s o m 0101740 e i n t e g r a t i o n w i 0101760 t h I n t e r l i s p , o r 0102000 s l i g h t m o d i f i c a 0102020 t i o n s o f e x i s t i n 0102040 g I n t e r l i s p f a c i 0102060 l i t i e s t o i m p l e m 0102100 e n t t h e m . M a j o r 0102120 p i e c e s o f e a c h 0102140 o f t h e s e a l r e a d y 0102160 e x i s t i n I n t e r l 0102200 i s p , w h i c h w i l l 0102220 e x p e d i t e t h e p o r 0102240 t . H o w e v e r , i t 0102260 w i l l a l s o b e s l o 0102300 w e d b y t h e n e e d 0102320 t o i n t e g r a t e t h e 0102340 n e w c o d e w i t h t 0102360 h e e x i s t i n g f a c i 0102400 l i t i e s . T h e s e e 0102420 f f e c t s w i l l o f f s 0102440 e t e a c h o t h e r t o 0102460 d i f f e r e n t d e g r e 0102500 e s i n t h e d i f f e r 0102520 e n t s u b t a s k s , s o 0102540 t h e i m p l e m e n t a t 0102560 i o n r a t e w i l l v a 0102600 r y c o r r e s p o n d i n g 0102620 l y , a s n o t e d . \r F i 0102640 l e S y s t e m , P a t h n 0102660 a m e s \r T h e s e f e a t u 0102700 r e s r e q u i r e b o t h 0102720 t h e i m p o r t i n g o 0102740 f C o m m o n L i s p s o 0102760 u r c e c o d e , t h e i 0103000 m p l e m e n t a t i o n o f 0103020 a s p e c i f i c t y p e 0103040 o f f i l e n a m e ( p 0103060 a t h n a m e ) p a r s i n g 0103100 , a n d i n t e r f a c i n 0103120 g o f t h a t c o d e t 0103140 o t h e f i l e s y s t e 0103160 m f u n c t i o n s t h a t 0103200 a l r e a d y e x i s t i 0103220 n I n t e r l i s p ( i . e 0103240 . , d i r e c t o r y f u n 0103260 c t i o n s , f i l e d e l 0103300 e t i o n , e t c . ) I n 0103320 t h e S p i c e p a t h n 0103340 a m e s c o d e , w e f i 0103360 n d 8 3 9 l i n e s o f 0103400 c o d e , w h i c h w o u l 0103420 d r e q u i r e 2 1 0 m a 0103440 n h o u r s o r 5 m a n 0103460 w e e k s . \r T h e r e i s 0103500 a l s o a n e c e s s a r 0103520 y e x t e n s i o n t o O 0103540 P E N S T R E A M , w h i c h 0103560 J o h n S y b a l s k y 377 0103600 377 \0 \0 h \0 a \0 s \0 377 \0 e s t i 0103620 m a t e d w o u l d r e q u 0103640 i r e 1 w e e k o f h i 0103660 s t i m e . \r 5 w e e k s 0103700 o f a l i s p p r o g r a 0103720 m m e r , t o i m p o r t 0103740 c o d e . \r 1 w e e k o f 0103760 J o h n S y b a l s k y , t 0104000 o m o d i f y I n t e r l i 0104020 s p ' s O P E N S T R E A M 0104040 f u n c t i o n . \r S p i c e 0104060 s o u r c e s t a t i s t i c 0104100 s : \r M a c r o s \t C o n s t a 0104120 n t s \t S t r u c t u r e s \t F 0104140 u n c t i o n s \t S o u r c e \t 0104160 C o m m e n t \t F i l e n a m e 0104200 \r 1 \r \r \t 6 \t 3 \t 1 \t 4 4 \t 1 0 0104220 4 0 \t 2 0 1 \t f i l e s y s \t \r 0104240 1 \r \r T o t a l o f 8 3 9 0104260 l i n e s o f c o d e ( e 0104300 x c l u d i n g c o m m e n t 0104320 s ) . \r S t r e a m s \r A n u 0104340 m b e r o f C o m m o n L 0104360 i s p s t r e a m f e a t u 0104400 r e s h a v e b e e n i m 0104420 p l e m e n t e d b y S t a 0104440 n L a n n i n g . G i v e 0104460 n t h e S p i c e e x a m 0104500 p l e o f 8 3 2 l i n e s 0104520 o f c o d e w e a r r i 0104540 v e a t a f i g u r e o 0104560 f 2 0 8 m a n h o u r s , 0104600 o f w h i c h 6 0 % i s 0104620 a l r e a d y c o m p l e t 0104640 e d , l e a v i n g 8 3 m 0104660 a n h o u r s o r 2 m a 0104700 n w e e k s o f e f f o r 0104720 t . T h i s t a s k c o 0104740 u l d b e d o n e b y e 0104760 i t h e r J o h n S y b a l 0105000 s k y o r S t a n L a n n 0105020 i n g . \r 2 w e e k s o f 0105040 e i t h e r J o h n S y b a 0105060 l s k y o r S t a n L a n 0105100 n i n g , t o f i n i s h 0105120 b u i l d i n g s t r e a m s 0105140 . \r S p i c e s o u r c e s 0105160 t a t i s t i c s : \r M a c r o 0105200 s \t C o n s t a n t s \t S t r u 0105220 c t u r e s \t F u n c t i o n s 0105240 \t S o u r c e \t C o m m e n t \t 0105260 F i l e n a m e \r 1 \r \r \t 8 \t 1 0105300 \t 1 \t 7 \t 2 0 4 \t 1 1 3 \t d e f 0105320 s t r e a m \t \r \t 1 2 \t 1 \t 9 \t 0105340 5 8 \t 9 2 2 \t 1 8 1 \t s t r e a 0105360 m \t \r 1 \r \r T o t a l o f 8 0105400 3 2 l i n e s o f c o d e 0105420 ( e x c l u d i n g c o m m 0105440 e n t s ) . \r R e a d e r / P r 0105460 i n t e r \r T h e r e i s a 0105500 l a r g e a m o u n t o f 0105520 c o d e t o b e i m p o 0105540 r t e d f o r t h i s p a 0105560 r t o f t h e s y s t e m 0105600 . T h e t a s k w i l l 0105620 r e q u i r e t w o n o n 0105640 - e x p e r t l i s p p r o 0105660 g r a m m e r s . T h e l 0105700 o w l e v e l s o f t h e 0105720 i m p o r t e d r e a d e r 0105740 c o d e w i l l n e e d 0105760 t o i n t e g r a t e w i t 0106000 h I n t e r l i s p d a t a 0106020 s t r u c t u r e s f o r 0106040 e f f i c i e n c y . M u c 0106060 h o f t h i s i s a p 0106100 u r e p o r t , b u t g i 0106120 v e n t h e c o m p l e x i 0106140 t y , s i z e a n d p e r 0106160 f o r m a n c e d e m a n d s 0106200 o n t h i s c o d e , w 0106220 e c h o o s e t o u s e 0106240 t h e b a s e l i n e e s t 0106260 i m a t e o f 4 l i n e s 0106300 / h o u r . T h u s , u s 0106320 i n g t h e S p i c e s t 0106340 a t i s t i c s o f 2 5 2 7 0106360 l i n e s o f c o d e , 0106400 w e h a v e 6 3 1 h o u r 0106420 s o r 1 5 w e e k s o f 0106440 l i s p p r o g r a m m i n 0106460 g . \r 1 5 m a n w e e k s 0106500 o f l i s p p r o g r a m m 0106520 i n g , t o i m p o r t a 0106540 n d i n t e g r a t e l i s 0106560 p c o d e . \r S p i c e s o 0106600 u r c e s t a t i s t i c s : 0106620 \r M a c r o s \t C o n s t a n t 0106640 s \t S t r u c t u r e s \t F u n 0106660 c t i o n s \t S o u r c e \t C o 0106700 m m e n t \t F i l e n a m e \r 1 0106720 \r \r \t 2 2 \t 1 4 \t 1 \t 4 5 \t 1 0 0106740 6 3 \t 1 7 1 \t r e a d e r \t \r \t 0106760 6 \t 1 \t 0 \t 4 4 \t 9 5 4 \t 2 9 0 0107000 \t p r i n t \t \r \t 8 \t 0 \t 0 \t 6 0107020 2 \t 1 1 8 4 \t 2 1 3 \t f o r m a 0107040 t \t \r 1 \r \r T o t a l o f 2 0107060 5 2 7 l i n e s o f c o d 0107100 e ( e x c l u d i n g c o m 0107120 m e n t s ) . \r H a s h t a b 0107140 l e s \r T h i s f e a t u r e 0107160 i s a l m o s t c o m p l 0107200 e t e l y i m p l e m e n t e 0107220 d b y a n e x i s t i n g 0107240 I n t e r l i s p f a c i l 0107260 i t y , r e q u i r i n g o 0107300 n l y a l l o w i n g N I L 0107320 t o b e s t o r e d i n 0107340 t o a h a s h t a b l e s 0107360 l o t a n d a n i m p l e 0107400 m e n t a t i o n o f t h e 0107420 S X H A S H f u n c t i o n 0107440 . U s i n g t h e S p i 0107460 c e s o u r c e s f o r r 0107500 e f e r e n c e , a t 3 3 5 0107520 l i n e s a n d 8 l i n 0107540 e s / h o u r , i t w i 0107560 l l r e q u i r e a b o u t 0107600 4 2 m a n h o u r s o r 0107620 1 m a n w e e k t o t 0107640 r a n s p o r t . \r 1 w e e k 0107660 o f a l i s p p r o g r 0107700 a m m e r , t o m o d i f y 0107720 I n t e r l i s p ' s h a s 0107740 h t a b l e d a t a t y p e . 0107760 \r S p i c e s o u r c e s t 0110000 a t i s t i c s : \r M a c r o s 0110020 \t C o n s t a n t s \t S t r u c 0110040 t u r e s \t F u n c t i o n s \t 0110060 S o u r c e \t C o m m e n t \t F 0110100 i l e n a m e \r 1 \r \r \t 1 4 \t 1 0110120 \t 1 \t 1 1 \t 3 6 8 \t 3 3 \t h a s 0110140 h \t \r 1 \r \r T o t a l o f 3 0110160 3 5 l i n e s o f c o d e 0110200 ( e x c l u d i n g c o m m 0110220 e n t s ) . \r T y p e s y s t 0110240 e m \r W e h a v e a n i m 0110260 p l e m e n t a t i o n o f 0110300 t h e t y p e f e a t u r e 0110320 n o w , w h i c h s t i l 0110340 l n e e d s S U B T Y P E P 0110360 a n d i n t e g r a t i o n 0110400 w i t h w h a t e v e r i 0110420 n t e r n a l i n t e r f a c 0110440 e w i l l b e n e e d e d 0110460 b y t h e i m p o r t e d 0110500 C o m m o n L i s p s o u 0110520 r c e s . T h e h i g h e 0110540 r l e v e l p a r t s o f 0110560 t h i s f e a t u r e ( n 0110600 e a r l y a l l o f i t ) 0110620 c a n b e i m p o r t e d 0110640 f r o m t h e C o m m o n 0110660 L i s p s o u r c e s , b 0110700 u t t h e p e r f o r m a n 0110720 c e r e q u i r e m e n t s 0110740 a u g u r f o r a c a r e 0110760 f u l i n t e g r a t i o n 0111000 a n d t h u s a c o n s e 0111020 r v a t i v e ( 4 l i n e / 0111040 h o u r ) e s t i m a t e . 0111060 T h e S p i c e s o u r c 0111100 e s h a v e 7 3 0 l i n e 0111120 s o f c o d e f o r t h 0111140 e s e f e a t u r e s , r e 0111160 q u i r i n g 1 8 2 . 5 m a 0111200 n h o u r s ( 4 . 5 m a n 0111220 w e e k s ) . \r 4 . 5 w e e 0111240 k s o f a l i s p p r o 0111260 g r a m m e r , t o t r a n 0111300 s p o r t c o d e . \r 1 m a 0111320 n w e e k o f a m i c r 0111340 o c o d e r f o r l o w l 0111360 e v e l s u p p o r t . \r S p 0111400 i c e s o u r c e s t a t i 0111420 s t i c s : \r M a c r o s \t C o 0111440 n s t a n t s \t S t r u c t u r 0111460 e s \t F u n c t i o n s \t S o u 0111500 r c e \t C o m m e n t \t F i l e 0111520 n a m e \r 1 \r \r \t 3 \t 1 \t 1 \t 6 0111540 \t 3 4 8 \t 3 7 \t d e f s u b o b 0111560 j e c t \t \r \t 3 \t 0 \t 0 \t 9 \t 5 0111600 5 7 \t 1 3 8 \t s u b t y p e p \t 0111620 \r 1 \r \r T o t a l o f 7 3 0 0111640 l i n e s o f c o d e ( 0111660 e x c l u d i n g c o m m e n 0111700 t s ) . \r S E T F \r T h i s r 0111720 e q u i r e s i m p o r t i n 0111740 g s o m e c o m p l e x c 0111760 o d e a n d i t s i n t e 0112000 g r a t i o n w i t h I n t 0112020 e r l i s p . U s i n g t 0112040 h e b a s e l i n e e s t i 0112060 m a t i n g r a t e , t h e 0112100 S p i c e s o u r c e s , 0112120 w h i c h c o n t a i n 8 1 0112140 1 l i n e s o f c o d e , 0112160 w o u l d r e q u i r e 2 0112200 0 2 m a n h o u r s o r 0112220 5 w e e k s o f a n o n 0112240 - e x p e r t ' s t i m e t 0112260 o i m p o r t . \r 5 w e e k 0112300 s o f a l i s p p r o g 0112320 r a m m e r , t o i m p o r 0112340 t a n d i n t e g r a t e 0112360 l i s p c o d e . \r S p i c e 0112400 s o u r c e s t a t i s t i 0112420 c s : \r M a c r o s \t C o n s t 0112440 a n t s \t S t r u c t u r e s \t 0112460 F u n c t i o n s \t S o u r c e 0112500 \t C o m m e n t \t F i l e n a m 0112520 e \r 1 \r \r \t 2 7 \t 0 \t 0 \t 5 \t 8 0112540 7 0 \t 5 9 \t m a c r o s \t \r 1 \r 0112560 \r T o t a l o f 8 1 1 l i 0112600 n e s o f c o d e ( w i t 0112620 h o u t c o m m e n t s ) . \r 0112640 4 . 3 N e w f e a t u r e s 0112660 \r T h e s e a r e m a i n l 0112700 y h i g h l e v e l f e a 0112720 t u r e s a n d r e q u i r 0112740 e l i t t l e i n t e g r a 0112760 t i o n f o r o u r f i r 0113000 s t p r o d u c t r e l e a 0113020 s e . T h u s , p r o g r 0113040 e s s i s a s s u m e d t 0113060 o b e a t t h e r e l a 0113100 t i v e l y r a p i d r a t 0113120 e o f 8 l i n e s p e r 0113140 h o u r . B e c a u s e 0113160 t h e s e f e a t u r e s r 0113200 e q u i r e l i t t l e i n 0113220 t e g r a t i o n w e c a n 0113240 d r a w o n m a n y o f 0113260 o u r o n - b o a r d I n 0113300 t e r l i s p p r o g r a m m 0113320 e r s t o a i d i n i m 0113340 p o r t i n g t h i s c o d 0113360 e i n t o o u r s y s t e 0113400 m . \r T h e a r e a s c o v 0113420 e r e d h e r e i n c l u d 0113440 e a r i t h m e t i c , l o 0113460 w l e v e l l i s t f u n 0113500 c t i o n s ( o f t e n r e 0113520 q u i r i n g n o t h i n g 0113540 m o r e t h a n r e n a m i 0113560 n g ) , b a s i c m a c r o 0113600 f u n c t i o n s , t h e 0113620 p r e t t y p r i n t e r , 0113640 t h e s e q u e n c e s o r 0113660 t i n g f u n c t i o n s , 0113700 e t c . \r S p i c e ' s 3 7 0113720 8 5 l i n e s o f c o d e 0113740 i m p l y 1 6 m a n w e 0113760 e k s o f l i s p p r o g 0114000 r a m m i n g , t o i m p o 0114020 r t c o d e . \r S p i c e s 0114040 o u r c e s t a t i s t i c s 0114060 : \r M a c r o s \t C o n s t a n 0114100 t s \t S t r u c t u r e s \t F u 0114120 n c t i o n s \t S o u r c e \t C 0114140 o m m e n t \t F i l e n a m e \r 0114160 1 \r \r \t 1 \t 1 6 \t 0 \t 5 9 \t 4 4 0114200 5 \t 4 5 \t a r i t h \t \r \t 3 \t 0 0114220 \t 0 \t 0 \t 1 1 6 \t 2 2 \t c o n s 0114240 t a n t s \t \r \t 6 \t 8 \t 0 \t 2 1 0114260 \t 7 1 0 \t 1 4 5 \t i n i t i a l 0114300 i z a t n \t \r \t 1 \t 1 1 2 \t 0 \t 0114320 0 \t 1 7 6 \t 2 3 \t l f l o a t - 0114340 c o n s t s \t \r \t 1 \t 0 \t 0 \t 2 0114360 \t 5 4 \t 2 2 \t m a c r o m e m o 0114400 \t \r \t 2 \t 3 \t 0 \t 3 0 \t 4 2 6 \t 0114420 4 8 \t m i s c \t \r \t 6 \t 1 \t 1 \t 0114440 1 5 \t 2 0 7 \t 3 0 \t o b j e c t 0114460 s \r \t 4 \t 2 \t 1 \t 2 2 \t 4 9 8 \t 0114500 8 3 \t p p r i n t \t \r \t 0 \t 1 \t 0114520 0 \t 5 2 \t 4 6 1 \t 5 2 \t p r e d 0114540 \t \r \t 0 \t 0 \t 0 \t 3 \t 5 5 \t 2 4 0114560 \t q u e r y \t \r \t 0 \t 4 \t 1 \t 6 0114600 \t 1 1 6 \t 2 3 \t r a n d \r \t 3 \t 0114620 0 \t 0 \t 1 2 \t 3 8 7 \t 8 9 \t s o 0114640 r t \t \r \t 1 3 \t 7 7 \t 0 \t 2 8 \t 0114660 7 3 5 \t 7 9 \t s p i r r a t \t \r 0114700 \t 1 \t 5 \t 0 \t 7 \t 1 2 8 \t 4 4 \t 0114720 t i m e \t \r 1 \r \r T o t a l o 0114740 f 3 7 8 5 l i n e s o f 0114760 c o d e ( w i t h o u t c o 0115000 m m e n t s ) . \r 4 . 4 C o m 0115020 p l e t e d f e a t u r e s \r 0115040 T h e s e a r e f e a t u r 0115060 e s t h a t h a v e a l r 0115100 e a d y b e e n c o m p l e 0115120 t e d . T h i s r e p r e 0115140 s e n t s a m e a s u r e 0115160 o f t i m e a l r e a d y 0115200 i n v e s t e d i n i m p o 0115220 r t i n g t h e S p i c e 0115240 C o m m o n L i s p s o u r 0115260 c e s w h i c h w o u l d 0115300 h a v e t o b e r e i n v 0115320 e s t e d i f a n o t h e r 0115340 s e t o f C o m m o n L 0115360 i s p s y s t e m s o u r c 0115400 e s w e r e u s e d . T 0115420 h e e s t i m a t e f o r 0115440 a n d o u r e x p e r i e n 0115460 c e i m p o r t i n g t h e 0115500 s e f e a t u r e s w a s 0115520 a l s o u s e d t o c o n 0115540 f i r m t h e a c c u r a c 0115560 y o f o u r b a s i s f 0115600 o r e s t i m a t i o n . \r S 0115620 o m e o f t h e s e f e a 0115640 t u r e s m a y s t i l l 0115660 b e n e f i t f r o m t u n 0115700 i n g t o g a i n p e r f 0115720 o r m a n c e . E x p e r t 0115740 i s e r e q u i r e d f o r 0115760 t u n i n g v a r i e s b 0116000 y f e a t u r e a n d i s 0116020 i n d i c a t e d i n t h 0116040 e s e p a r a t e s e c t i 0116060 o n s . \r F u n c t i o n C a 0116100 l l a n d L a m b d a - l i 0116120 s t s \r S i n c e a n i m p 0116140 l e m e n t a t i o n e x i s 0116160 t s , w e c a n p o s t p 0116200 o n e t h i s w o r k b e 0116220 y o n d t h e i n i t i a l 0116240 d e v e l o p m e n t . I 0116260 f p e r f o r m a n c e i s 0116300 i m p a c t e d , p e r f o 0116320 r m a n c e t u n i n g m a 0116340 y b e r e q u i r e d . 0116360 T h i s w o u l d r e q u i 0116400 r e c h a n g e s t o t h 0116420 e b a s i c f u n c t i o n 0116440 c a l l i n g m e c h a n i 0116460 s m a n d s p e c i a l e 0116500 n c o d i n g f o r & R E S 0116520 T a r g u m e n t s . \r 6 m 0116540 a n w e e k s o f e x p e 0116560 r t p r o g r a m m i n g , 0116600 t o d e s i g n , b u i l d 0116620 a n d m o d i f y i n t e 0116640 r p r e t e r . \r 2 w e e k s 0116660 o f o n e m i c r o c o d 0116700 e r , t o d e s i g n a n 0116720 d b u i l d m i c r o c o d 0116740 e . \r D e f s t r u c t \r T h e 0116760 D E F S T R U C T f e a t u 0117000 r e s h o u l d b e i n t 0117020 e r f a c e d w i t h t h e 0117040 l o w l e v e l I n t e r 0117060 l i s p D E C L A R E D A T A 0117100 T Y P E f e a t u r e a n d 0117120 I n t e r l i s p a r r a y 0117140 s . T h e h i g h e r l 0117160 e v e l s e c t i o n o f 0117200 t h i s f e a t u r e ( n e 0117220 a r l y a l l o f i t ) 0117240 c a n b e t r a n s p o r t 0117260 e d f r o m t h e C o m m 0117300 o n L i s p s o u r c e s . 0117320 T h e S p i c e s o u r 0117340 c e s h a v e 1 6 7 3 l i 0117360 n e s o f c o d e f o r 0117400 t h i s f e a t u r e , r e 0117420 q u i r i n g ( a t 4 l i 0117440 n e s / h o u r ) 4 1 8 0117460 m a n h o u r s ( 1 0 m a 0117500 n w e e k s ) o f e f f o 0117520 r t . \r 1 0 w e e k s o f 0117540 a l i s p p r o g r a m m e 0117560 r , t o i m p o r t a n d 0117600 i n t e g r a t e c o d e . 0117620 \r S p i c e s o u r c e s t 0117640 a t i s t i c s : \r M a c r o s 0117660 \t C o n s t a n t s \t S t r u c 0117700 t u r e s \t F u n c t i o n s \t 0117720 S o u r c e \t C o m m e n t \t F 0117740 i l e n a m e \r 1 \r \r \t 1 \t 0 \t 0117760 0 \t 1 \t 3 8 \t 1 4 \t d e f r e c 0120000 o r d \r \t 4 \t 1 \t 2 \t 2 0 \t 5 0 0120020 4 \t 6 5 \t d e f s t r u c t \t \r 0120040 \t 3 \t 1 \t 1 \t 6 \t 3 4 8 \t 3 7 \t 0120060 d e f s u b o b j \t \r 1 \r \r T o 0120100 t a l o f 1 6 7 3 l i n e 0120120 s o f c o d e ( e x c l u 0120140 d i n g c o m m e n t s ) . \r 0120160 M a c r o s \r T h e s i m p l 0120200 e c o m p a t i b i l i t y 0120220 f e a t u r e o f h a v i n 0120240 g t h e C o m m o n L i s 0120260 p v e r s i o n s o f D E 0120300 F M A C R O a n d D E F U N 0120320 r e m o v e e a c h o t h 0120340 e r ' s d e f i n i t i o n s 0120360 b e f o r e i n s t a l l i 0120400 n g n e w o n e s i s t 0120420 r i v i a l t o i m p l e m 0120440 e n t . H o w e v e r , I 0120460 n t e r l i s p d o e s n o 0120500 t c u r r e n t l y c o m p 0120520 i l e m a c r o d e f i n i 0120540 t i o n s , c a u s i n g m 0120560 a c r o e x p a n s i o n t 0120600 o t a k e u p a s i g n 0120620 i f i c a n t p e r c e n t a 0120640 g e o f c o m p i l e t i 0120660 m e . B e c a u s e t h i 0120700 s i s s u c h a w i d e 0120720 l y k n o w n f e a t u r e 0120740 o f o t h e r l i s p s , 0120760 i t w o u l d b e o f 0121000 v a l u e t o i m p l e m e 0121020 n t t h i s f o r o u r 0121040 s y s t e m . \r O t h e r \r T h 0121060 e f o l l o w i n g f e a t 0121100 u r e s w e r e d e s c r i 0121120 b e d p r e v i o u s l y a 0121140 n d h a v e b e e n s u b 0121160 s t a n t i a l l y i m p o r 0121200 t e d f r o m t h e S p i 0121220 c e s o u r c e s . B e c 0121240 a u s e m a n y o f t h e 0121260 s e f e a t u r e s r e q u 0121300 i r e d l o w l e v e l i 0121320 n t e g r a t i o n , t h e 0121340 b a s e l i n e ( 4 l i n e 0121360 / h o u r ) e s t i m a t e 0121400 w o u l d b e a p p r o p r 0121420 i a t e . S p i c e ' s 5 0121440 0 0 9 l i n e s o f c o d 0121460 e s u g g e s t s 1 2 5 2 0121500 m a n h o u r s ( 3 1 m a 0121520 n w e e k s ) o f e f f o 0121540 r t . N o t e t h a t t 0121560 h i s e s t i m a t e a g r 0121600 e e s w e l l w i t h t h 0121620 e a p p r o x i m a t e l y 0121640 1 1 5 0 m a n h o u r s a 0121660 c t u a l l y e x p e n d e d 0121700 b y L a r r y M a s i n t 0121720 e r ( 2 0 0 ) , R o n F i 0121740 s c h e r ( 8 5 0 ) a n d 0121760 o t h e r s ( 1 0 0 ) i n 0122000 t h e c o n s t r u c t i o n 0122020 o f t h e C M L l i b r 0122040 a r y p a c k a g e . \r 3 1 0122060 m a n w e e k s ( e s t i m 0122100 a t e d ; a c t u a l l y t 0122120 o o k 2 9 ) o f m i x e d 0122140 e x p e r t i s e l i s p 0122160 p r o g r a m m i n g , a l r 0122200 e a d y s p e n t t o i m 0122220 p o r t , d e s i g n , b u 0122240 i l d , a n d i n t e g r a 0122260 t e . \r S p i c e s o u r c e 0122300 s t a t i s t i c s : \r M a c 0122320 r o s \t C o n s t a n t s \t S t 0122340 r u c t u r e s \t F u n c t i o 0122360 n s \t S o u r c e \t C o m m e n 0122400 t \t F i l e n a m e \r 1 \r \r \t 1 0122420 \t 3 \t 0 \t 4 5 \t 5 5 3 \t 2 8 \t a 0122440 r r a y \t \r \t 0 \t 0 \t 0 \t 6 \t 1 0122460 5 3 \t 4 4 \t b a c k q \t \r \t 3 \t 0122500 7 \t 0 \t 3 6 \t 3 4 1 \t 4 1 \t c h 0122520 a r \t \r \t 0 \t 0 \t 0 \t 8 \t 3 9 7 0122540 \t 6 3 \t d e f m a c r o \t \r \t 1 0122560 \t 1 \t 0 \t 2 3 \t 4 3 3 \t 3 8 \t d 0122600 e b u g \t \r \t 4 \t 0 \t 0 \t 1 0 4 0122620 \t 7 0 5 \t 5 2 \t l i s t \r \t 1 \t 0122640 0 \t 0 \t 0 \t 4 2 \t 3 1 \t k e y w 0122660 o r d \t \r \t 9 3 \t 0 \t 0 \t 8 7 \t 0122700 1 7 9 3 \t 7 3 \t s e q \t \r \t 2 \t 0122720 0 \t 0 \t 2 2 \t 4 0 0 \t 4 7 \t s h 0122740 a r p m \t \r \t 5 \t 0 \t 0 \t 3 3 \t 0122760 4 9 6 \t 4 0 \t s t r i n g \t \r \t 0123000 0 \t 0 \t 0 \t 2 1 \t 1 7 1 \t 1 8 \t 0123020 s y m b o l \t \r 1 \r \r T o t a l 0123040 o f 5 0 0 9 l i n e s o 0123060 f c o d e ( e x c l u d i n 0123100 g c o m m e n t s ) . \r 4 . 5 0123120 S u m m a r y o f r e q u 0123140 i r e d e f f o r t \r A l l 0123160 f i g u r e s g i v e n a r 0123200 e i n m a n w e e k s o 0123220 f e f f o r t . \r \t E x p e r 0123240 t i s e \t L i s p \t E x p e r t 0123260 \t M i c r o c o d e \r 2 \r \r C r 0123300 i t i c a l s ( 4 . 1 ) \r \t P 0123320 a c k a g e s \t 2 . 3 \t 3 . 0 \t 0123340 \r \t M u l t i p l e v a l u e 0123360 s \t \t 6 . 0 \t 2 . 0 \r \t L e x i 0123400 c a l s c o p i n g \t \t 1 2 . 0123420 0 \t 3 . 0 \r \t I n t e r p r e t 0123440 e r \t 4 . 1 \t 4 . 0 \t \r \t C o n 0123460 t r o l \t 7 . 0 \t 4 . 0 \t 2 . 0 0123500 \r \t 1 \r \r \t s u b t o t a l \t 1 0123520 3 . 4 \t 2 9 . 0 \t 7 . 0 \r 2 \r \r 0123540 I n t e g r a t i o n a n d 0123560 m i n o r c h a n g e s ( 4 0123600 . 2 ) \r \t F i l e s y s & 0123620 p a t h s \t 6 . 0 \t \r \t S t r e 0123640 a m s \t 2 . 0 \t \r \t R e a d e r 0123660 / P r i n t e r \t 1 5 . 0 \t \r \t 0123700 H a s h t a b l e s \t 1 . 0 \t 0123720 \r \t T y p e s y s t e m \t 4 . 0123740 5 \t \t 1 . 0 \r \t S E T F \t 5 . 0 0123760 \t \r \t 1 \r \r \t s u b t o t a l \t 0124000 3 3 . 5 \t \t 1 . 0 \r 2 \r \r N e w 0124020 f e a t u r e s ( 4 . 3 ) \r 0124040 \t s u b t o t a l \t 1 6 . 0 \t \r 0124060 2 \r \r I n i t i a l i m p l e 0124100 m e n t a t i o n \t 6 2 . 9 \t 2 0124120 9 . 0 \t 8 . 0 \r \t 1 0 % c o n 0124140 t i n g e n c y \t 6 . 3 \t 2 . 9 0124160 \t 0 . 8 \r \t 1 \r \r \t s u b t o t 0124200 a l \t 6 9 . 2 \t 3 1 . 9 \t 8 . 8 0124220 \r 2 \r \r P e r f o r m a n c e 0124240 t u n i n g \r \t F u n c a l l 0124260 & l a m b d a s \t \t 6 . 0 \t 2 0124300 . 0 \r \t S t r u c t u r e s \t 1 0124320 0 . 0 \t \r \t 1 \r \r \t s u b t o t 0124340 a l \t 1 0 . 0 \t 6 . 0 \t 2 . 0 \r 0124360 2 \r \r T u n e d i m p l e m e 0124400 n t a t i o n \t 7 2 . 9 \t 3 5 . 0124420 0 \t 1 0 . 0 \r \t 1 0 % c o n t 0124440 i n g e n c y \t 7 . 3 \t 3 . 5 \t 0124460 1 . 0 \r \t 1 \r \r \t t o t a l \t 8 0124500 0 . 2 \t 3 8 . 9 \t 1 1 . 0 \r 2 \r 0124520 \r P e r s o n s , w h i c h 0124540 i s t h e f i n a l h e a 0124560 d c o u n t n e e d e d , 0124600 g i v e n 1 5 w e e k s o 0124620 f i m p l e m e n t a t i o n 0124640 t i m e u n t i l t h e 0124660 c o d e i s i n t e r n a l 0124700 l y f r o z e n ( a s s u m 0124720 i n g n o o v e r l a p o 0124740 r d e p e n d e n c i e s ) . 0124760 \r \t C r i t i c a l \t M e d i u 0125000 m \t N e w \t T o t a l s \t P e r 0125020 s o n s \t T u n i n g \r 1 \r \r E 0125040 x p e r t P r o g . \t 2 9 . 0 0125060 \t \t \t 2 9 . 0 \t 2 \t 6 . 0 \r L i 0125100 s p P r o g . \t 1 3 . 4 \t 3 3 0125120 . 5 \t 1 6 . 0 \t 6 2 . 9 \t 5 \t 1 0125140 0 . 0 \r M i c r o c o d e r \t 7 0125160 . 0 \t 1 . 0 \t \t 8 . 0 \t 1 \t 2 . 0125200 0 \r 1 \r S u b t o t a l s \t 4 9 0125220 . 4 \t 3 4 . 5 \t 1 6 . 0 \t 9 9 . 0125240 9 \t 6 \t 1 8 . 0 \r 1 0 % c o n 0125260 t i n g e n c y \t 4 . 9 \t 3 . 5 0125300 \t 1 . 6 \t 1 0 . 0 \t 1 \t 1 . 8 \r 0125320 1 \r \r T o t a l s \t 5 4 . 3 \t 3 0125340 8 . 0 \t 1 7 . 6 \t 1 0 9 . 9 \t 8 0125360 \t 1 9 . 8 \r 1 \r \r E x p e r t 0125400 p r o g r a m m e r s : L a r 0125420 r y M a s i n t e r a n d 0125440 B i l l v a n M e l l e . \r 0125460 L i s p p r o g r a m m e r s 0125500 : R o n F i s c h e r , H 0125520 e r b J e l l i n e k , G r 0125540 e g N u y e n s , A n d y 0125560 D a n i e l s , P a v e l C 0125600 u r t i s a n d J o h n B 0125620 a n e , w i t h c o n t r i 0125640 b u t i o n s b y J o h n 0125660 S y b a l s k y a n d S t a 0125700 n L a n n i n g . \r M i c r o 0125720 c o d e r : D o n C h a r n 0125740 l e y . \r 4 . 6 T i m e l i n 0125760 e \r \t W e e k \t D a t e \t E v e 0126000 n t \r 1 \r \r \t 0 \t F e b . 3 \t 0126020 I m p l e m e n t a t i o n b 0126040 e g i n s . \r \t 1 5 \t M a y 1 0126060 9 \t A l l c r i t i c a l , 0126100 l o w l e v e l s u p p o r 0126120 t i n p l a c e . \r I m p l 0126140 e m e n t a t i o n c o m p l 0126160 e t e , i n t e r n a l c o 0126200 d e f r e e z e . \r B e g i n 0126220 v a l i d a t i o n , t e s 0126240 t i n g a n d p e r f o r m 0126260 a n c e t u n i n g . \r \t 2 1 0126300 \t J u n e 3 0 \t B e g i n a 0126320 l p h a t e s t r e l e a s 0126340 e . \r \t 2 6 \t A u g u s t 4 \t 0126360 B e g i n b e t a t e s t 0126400 r e l e a s e . \r 1 \r \r 5 . R 0126420 e s o u r c e a n d p r o j 0126440 e c t i m p a c t s \r T i m e 0126460 l i n e s s i s p e r h a p 0126500 s t h e p r i n c i p a l 0126520 r e q u i r e m e n t f o r 0126540 t h i s d e v e l o p m e n t 0126560 . T h e r e f o r e , i n 0126600 s c h e d u l i n g t h i s 0126620 w o r k , w e h a v e a 0126640 s s u m e d t h a t a l l 0126660 o t h e r p l a n s a n d 0126700 p r o j e c t s w i l l c e 0126720 d e r e s o u r c e s t o 0126740 t h i s a c t i v i t y w h 0126760 e r e t h e y c o n f l i c 0127000 t . T h e p r i n c i p a l 0127020 i m p a c t o f t h i s 0127040 w i l l b e t o t h e o 0127060 n g o i n g s u p p o r t t 0127100 h a t P r o d u c t D e v e 0127120 l o p m e n t p r o v i d e s 0127140 t o o t h e r f u n c t i 0127160 o n a l g r o u p s . I n 0127200 p a r t i c u l a r , i t w 0127220 o u l d r e q u i r e a n 0127240 a l m o s t t o t a l h o l 0127260 d o n b u g f i x e s , 0127300 R Q I s u p p o r t , f i e 0127320 l d a n d s a l e s s u p 0127340 p o r t v i s i t s , e t c 0127360 . C u r r e n t l y , b e t 0127400 w e e n 2 0 - 3 0 % o f t 0127420 h e t i m e o f s e v e r 0127440 a l o f t h e p r i n c i 0127460 p a l s i s d e v o t e d 0127500 t o t h i s k i n d o f 0127520 a c t i v i t y a n d v i r 0127540 t u a l l y a l l o f i t 0127560 w o u l d h a v e t o b 0127600 e h a l t e d t o p e r m 0127620 i t t h e i n t e n s e , 0127640 f o c u s e d e f f o r t w 0127660 e h a v e d e s c r i b e d 0127700 h e r e . S i n c e e v e 0127720 n t h e d i s r u p t i o n 0127740 c a u s e d b y t h e p 0127760 r e p a r a t i o n o f t h 0130000 i s p l a n h a s c a u s 0130020 e d s o m e p a i n f o r 0130040 t h e i m p a c t e d g r 0130060 o u p s , t h e i m p a c t 0130100 o f f o u r m o n t h s 0130120 o f t h i s s h o u l d n 0130140 o t b e t a k e n l i g h 0130160 t l y . \r F u r t h e r , c e 0130200 n t r a l t o a c h i e v i 0130220 n g t h e d e s i r e d s 0130240 c h e d u l e i s t h e d 0130260 i v e r s i o n o f m o s t 0130300 o f o u r e x p e r i e n 0130320 c e d L i s p t a l e n t 0130340 f r o m e x i s t i n g p r 0130360 o j e c t s t o t h i s o 0130400 n e . I n a d d i t i o n 0130420 , t o e l i m i n a t e t 0130440 h e s t a r t u p d e l a y 0130460 s a s s o c i a t e d w i t 0130500 h h i r i n g , w e a r e 0130520 p r o p o s i n g t o d i 0130540 v e r t i n c o m i n g h i 0130560 r e s w h o c a n c o n t 0130600 r i b u t e f r o m o t h e 0130620 r p r o j e c t s ( p r i n 0130640 c i p a l l y T a m a r i n ) 0130660 t o t h i s a c t i v i t 0130700 y . T h i s w i l l h a 0130720 v e a d r a m a t i c , i 0130740 m m e d i a t e n e g a t i v 0130760 e i m p a c t o n t h e s 0131000 e o t h e r a c t i v i t i 0131020 e s . I f i n c r e m e n 0131040 t a l h i r i n g i s a p 0131060 p r o v e d t o b a c k f i 0131100 l l t h i s d i v e r s i o 0131120 n , t h e i m p a c t w o 0131140 u l d b e l i m i t e d t 0131160 o a d e l a y i n t h e 0131200 d i v e r t e d p r o j e c 0131220 t s , b u t e v e n t h i 0131240 s w i l l b e p a i n f u 0131260 l t o t h e s e p r o j e 0131300 c t s ' c o n s t i t u e n c 0131320 i e s . \r T h e s h o r t t 0131340 i m e f u s e o f m u c h 0131360 o f t h i s d e v e l o p 0131400 m e n t m i t i g a t e s a 0131420 g a i n s t h o p i n g t o 0131440 d o m u c h o f i t w 0131460 i t h n e w h i r e s r e 0131500 c r u i t e d f o r t h e 0131520 p u r p o s e . T h e r e 0131540 a r e t w o e x c e p t i o 0131560 n s t o t h i s , h o w e 0131600 v e r . F i r s t w o u l d 0131620 b e t o t r y t o r e 0131640 c r u i t o n e o r t w o 0131660 e x p e r i e n c e d C o m 0131700 m o n L i s p p r o g r a m 0131720 m e r s s i m p l y t o i 0131740 n c r e a s e t h e n u m b 0131760 e r o f p e o p l e w i t 0132000 h i n t h e p r o j e c t 0132020 w h o a r e f l u e n t u 0132040 s e r s o f t h a t d i a 0132060 l e c t t o s e r v e a s 0132100 a s o u n d i n g b o a r 0132120 d a n d r e a l i t y c h 0132140 e c k f o r t h e i m p l 0132160 e m e n t a t i o n . T h e s 0132200 e i n d i v i d u a l s a r 0132220 e n o t s h o w n o n t 0132240 h e a b o v e p r o j e c t 0132260 c h a r t s , a s i t i 0132300 s l i k e l y t h a t t h 0132320 e y w o u l d n o t a r r 0132340 i v e i n t i m e t o c 0132360 o n t r i b u t e g r e a t l 0132400 y t o t h e p o r t , b 0132420 u t t h e i r p r e s e n c 0132440 e h e r e w o u l d b e 0132460 a g r e a t h e l p d u r 0132500 i n g t h e l a t e r s t 0132520 a g e s o f t e s t i n g 0132540 a n d f i n a l i n t e g r 0132560 a t i o n . F i n a l l y , 0132600 i n a d d i t i o n t o 0132620 t h e t e c h n i c a l c o 0132640 n t r i b u t o r s w e h a 0132660 v e i d e n t i f i e d , t 0132700 h i s p r o j e c t w o u l 0132720 d n e e d b o t h s e c r 0132740 e t a r i a l s u p p o r t 0132760 ( o n e F T E ) a n d o n 0133000 e j u n i o r t e c h n i c 0133020 i a n t o p r o v i d e l 0133040 o a d u p s , g a t h e r a 0133060 n d r u n v a l i d a t i o 0133100 n s u i t e s a n d p e r 0133120 f o r m a n c e m e a s u r e 0133140 s , m a i n t a i n f i l e 0133160 s e r v e r s u p p o r t , 0133200 e t c . S e v e r a l a 0133220 d d i t i o n a l m a c h i n 0133240 e s t o s u p p o r t i n 0133260 t e n s i v e d e b u g g i n 0133300 g , o f f - s i t e w o r k 0133320 , e t c . w o u l d a l s 0133340 o b e a w i s e i n v e 0133360 s t m e n t . \r A c o m p l e 0133400 t e a n a l y s i s o f t 0133420 h e 1 9 8 6 a l l o c a t i 0133440 o n s o f P r o d u c t D 0133460 e v e l o p m e n t m a n p o 0133500 w e r i s b e y o n d t h 0133520 i s d o c u m e n t . H o w 0133540 e v e r , a b r i e f s u 0133560 m m a r y o f t h e i m p 0133600 a c t o f t h i s p r o p 0133620 o s a l i s n o t o u t 0133640 o f p l a c e . P a r t i 0133660 t i o n e d b y p e r s o n 0133700 , t h e e f f e c t s o f 0133720 t h i s p r o j e c t o n 0133740 o t h e r s c h e d u l e d 0133760 a c t i v i t i e s w o u l 0134000 d b e : \r P e r s o n \t N e e 0134020 d \t I m p a c t e d a c t i v 0134040 i t i e s \r M a s i n t e r \t 1 0134060 0 0 % \t C o m m o n L o o p s ; 0134100 t r o u b l e s h o o t i n g 0134120 \r v a n M e l l e \t 1 0 0 % \t 0134140 N e t w o r k i n g ; O S a 0134160 n d V M e m b u g f i x e 0134200 s \r F i s c h e r \t 1 0 0 % \t N 0134220 o i m p a c t ; a l r e a d 0134240 y a s s i g n e d \r P u r c e 0134260 l l \t 2 5 % \t T a m a r i n ; 0134300 1 1 8 6 ; P r o l o g \r S y 0134320 b a l s k y \t 5 0 % \t T e x t 0134340 e d i t o r a n d g r a p 0134360 h i c s e x t e n s i o n s \r 0134400 N u y e n s \t 1 0 0 % \t T e x t 0134420 a n d g r a p h i c s \r J e 0134440 l l i n e k \t 1 0 0 % \t G r a p 0134460 h i c s ; P r o l o g \r C h a 0134500 r n l e y \t 5 0 % \t 1 1 8 6 0134520 e x t e n s i o n s ; P r o l 0134540 o g \r B a n e \t 1 0 0 % \t T a m 0134560 a r i n \r P a v e l \t 1 0 0 % \t 0134600 T a m a r i n \r D a n i e l s \t 0134620 5 0 % \t T a m a r i n ; i n s 0134640 t a l l a t i o n u t i l i t 0134660 i e s \r F a i l i n g e x p l 0134700 i c i t p l a n s t o b a 0134720 c k f i l l t h e s e p e o 0134740 p l e b y a d d i t i o n a 0134760 l h i r i n g , t h e i r 0135000 p r o j e c t s w i l l s l 0135020 i p d i r e c t l y i n p 0135040 r o p o r t i o n t o t h e 0135060 p e r c e n t a g e a n d 0135100 d u r a t i o n o f t h e i 0135120 r i n v o l v e m e n t . 0135140 T h u s , f o r e x a m p l 0135160 e , t h e r e w o u l d b 0135200 e n o n e t w o r k i n g 0135220 s u p p o r t a t a l l f 0135240 o r t h e f o u r m o n t 0135260 h s t h a t B i l l v a n 0135300 M e l l e i s u n a v a i 0135320 l a b l e , u n l e s s o t 0135340 h e r a r r a n g e m e n t s 0135360 a r e m a d e . T h i s 0135400 s h o u l d b e u n d e r 0135420 s t o o d c l e a r l y i n 0135440 a d v a n c e . P a r t i 0135460 t i o n e d b y p r o j e c 0135500 t , t h e e f f e c t s w 0135520 o u l d b e \r C o l o r W i 0135540 n d o w s \t H a l t e d \r 4 0 4 0135560 5 p r i n t i n g i m p r o 0135600 v e m e n t s \t H a l t e d \r D 0135620 I G , K e y b o a r d r e w 0135640 o r k \t H a l t e d \r N e w g 0135660 a r b a g e c o l l e c t o r 0135700 \t H a l t e d \r T E d i t i m 0135720 p r o v e m e n t s \t H a l t e 0135740 d \r A p e x s p e c i a l r 0135760 e q u e s t s \t H a l t e d \r N 0136000 e w i n s t a l l a t i o n 0136020 u t i l i t y \t H a l t e d \r A 0136040 p p l i c a t i o n i n s t a 0136060 l l a t i o n u t i l i t y \t 0136100 H a l t e d \r B u s M a s t e r 0136120 ( 1 1 8 6 ) \t H a l t e d \r P 0136140 r e - e m p t i v e s c h e d 0136160 u l i n g \t H a l t e d \r M u l 0136200 t i p l e s t r e a m s / 0136220 f i l e \t H a l t e d \r N S R 0136240 a n d o m a c c e s s \t H a l 0136260 t e d \r O t h e r s e r v i c 0136300 e s u p g r a d e s \t H a l t 0136320 e d \r 1 1 8 6 8 K p e r f o 0136340 r m a n c e u c o d e \t 3 m 0136360 o n t h d e l a y \r P r o l o 0136400 g 1 1 8 6 \t D e l a y e d u 0136420 n l e s s e a s y \r P r o l o 0136440 g p e r f o r m a n c e t u 0136460 n i n g \t H a l t e d \r T a m a 0136500 r i n \t 6 m o n t h d e l a 0136520 y \r I t i s i m p o r t a n 0136540 t t h a t t h i s i m p a 0136560 c t i s c l e a r l y u n 0136600 d e r s t o o d t h r o u g h 0136620 o u t t h e b u s i n e s s 0136640 u n i t b e f o r e t h i 0136660 s p r o j e c t s c h e d u 0136700 l e i s c o m m i t t e d 0136720 t o . \r 6 . T o c l o s e 0136740 \r T h e i m p l e m e n t a t 0136760 i o n o f a C o m m o n 0137000 L i s p p r o d u c t w i t 0137020 h i n t h e a l l o w e d 0137040 t i m e f r a m e w o u l d 0137060 r e q u i r e a t r e m e 0137100 n d o u s , c o n c e r t e d 0137120 e f f o r t b y a l l o 0137140 f X A I S . T h i s p l 0137160 a n t r i e s t o s t r e 0137200 t c h t h i s t i m e t o 0137220 o b t a i n t h e m o s t 0137240 c o m p r e h e n s i v e , 0137260 i n t e g r a t e d i m p l e 0137300 m e n t a t i o n p o s s i b 0137320 l e w i t h i n t h e n e 0137340 e d t o g e t i t t o 0137360 m a r k e t q u i c k l y . 0137400 M u c h o f t h i s w o 0137420 r k a n d p l a n n i n g 0137440 i s g e r m a n e t o a n 0137460 y s t r o n g l y I n t e r 0137500 l i s p c o u p l e d i m p 0137520 l e m e n t a t i o n o f C 0137540 o m m o n L i s p . W i t 0137560 h i n t h a t c l a s s o 0137600 f i m p l e m e n t a t i o n 0137620 s , w e b e l i e v e t h 0137640 a t t h i s p r o p o s a l 0137660 w o u l d p r o v i d e a 0137700 h i g h q u a l i t y C o 0137720 m m o n L i s p s y s t e m 0137740 t h a t w o u l d a l s o 0137760 p r e s e r v e a n d t r 0140000 a n s i t i o n o u r e x i 0140020 s t i n g c u s t o m e r s ' 0140040 c o d e a s s e t s . W 0140060 e r e q u e s t y o u r s 0140100 u p p o r t i n f a c i n g 0140120 t h e s a c r i f i c e s 0140140 t h a t w o u l d b e n e 0140160 c e s s a r y t o m a k e 0140200 i t a r e a l i t y . \r \0 \0 0140220 \0 \0 \0 003 ( L I S T ( ( P A G E 0140240 N I L ( P A P E R S I Z E 0140260 L e t t e r F O L I O I N F O 0140300 ( A R A B I C ) ) ( 0 0140320 0 6 1 2 7 9 2 ) ( ( T E X 0140340 T N I L N I L ( 7 2 7 2 0140360 4 6 8 6 4 8 ) N I L ) ) ) 0140400 ( P A G E N I L ( P A P E 0140420 R S I Z E L e t t e r F O L 0140440 I O I N F O ( A R A B I C 0140460 ) ) ( 0 0 6 1 2 7 9 2 ) 0140500 ( ( F O L I O N I L ( P A 0140520 R A L O O K S ( Q U A D R I 0140540 G H T ) C H A R L O O K S ( 0140560 S U P E R S C R I P T 0 I N 0140600 V I S I B L E O F F S E L E 0140620 C T P O I N T O F F P R O T 0140640 E C T E D O F F S I Z E 1 0140660 0 F A M I L Y G A C H A O 0140700 V E R L I N E O F F S T R I 0140720 K E O U T O F F U N D E R L 0140740 I N E O F F E X P A N S I O 0140760 N R E G U L A R S L O P E 0141000 R E G U L A R W E I G H T M 0141020 E D I U M I N V E R T E D O 0141040 F F U S E R I N F O N I L 0141060 S T Y L E N I L ) F O R M A 0141100 T I N F O ( A R A B I C ) 0141120 ) ( 2 5 2 7 4 4 2 8 8 3 0141140 6 ) N I L ) ( T E X T N I 0141160 L N I L ( 7 2 7 2 4 6 8 0141200 6 4 8 ) N I L ) ) ) ( P A 0141220 G E N I L ( P A P E R S I Z 0141240 E L e t t e r F O L I O I N 0141260 F O ( A R A B I C ) ) ( 0141300 0 0 6 1 2 7 9 2 ) ( ( F 0141320 O L I O N I L ( P A R A L O 0141340 O K S ( Q U A D R I G H T ) 0141360 C H A R L O O K S ( S U P E 0141400 R S C R I P T 0 I N V I S I 0141420 B L E O F F S E L E C T P O 0141440 I N T O F F P R O T E C T E 0141460 D O F F S I Z E 1 0 F A 0141500 M I L Y G A C H A O V E R L 0141520