$ od -c -N 50000 [eris]<LispManual>CLISPguts.im!4 0000000 \r \r { B e g i n S u b S e c 0000020 D W I M I F Y } \r { T i t l e 0000040 D W I M I F Y } \r { T e x t \r \r 0000060 { i n d e x * B E G I N * D 0000100 W I M I F Y F N } \r { i n d e 0000120 x * P R I M A R Y * D W I M 0000140 I F Y F N } \r \r { f n D W I 0000160 M I F Y } i s e f f e c t i 0000200 v e l y a p r e p r o c e s 0000220 s o r f o r C L I S P . 0000240 { f n D W I M I F Y } o p e 0000260 r a t e s b y s c a n n i n 0000300 g a n e x p r e s s i o n 0000320 a s t h o u g h i t w e r 0000340 e b e i n g i n t e r p r e 0000360 t e d , a n d f o r e a c 0000400 h f o r m t h a t w o u l 0000420 d g e n e r a t e a n e r 0000440 r o r , c a l l i n g D W I 0000460 M t o " f i x " i t . 0000500 { f n D W I M I F Y } p e r 0000520 f o r m s { i t a l l } D 0000540 W I M t r a n s f o r m a t i 0000560 o n s , n o t j u s t C L 0000600 I S P t r a n s f o r m a t i 0000620 o n s , s o i t d o e s 0000640 s p e l l i n g c o r r e c t 0000660 i o n , f i x e s 8 - 9 e 0000700 r r o r s , h a n d l e s { 0000720 l i s p F / L } , e t c . 0000740 T h u s t h e u s e r w 0000760 i l l s e e t h e s a m e 0001000 m e s s a g e s , a n d b 0001020 e a s k e d f o r a p p r 0001040 o v a l i n t h e s a m e 0001060 s i t u a t i o n s , a s 0001100 h e w o u l d i f t h e 0001120 e x p r e s s i o n w e r e 0001140 a c t u a l l y r u n . I 0001160 f D W I M i s u n a b l e 0001200 t o m a k e a c o r r e 0001220 c t i o n , n o m e s s a g 0001240 e i s p r i n t e d , t h 0001260 e f o r m i s l e f t a 0001300 s i t w a s , a n d t h 0001320 e a n a l y s i s p r o c e 0001340 e d s . \r \r \r { f n D W I M I 0001360 F Y } k n o w s e x a c t l 0001400 y h o w t h e i n t e r p 0001420 r e t e r w o r k s . I t 0001440 k n o w s t h e s y n t a 0001460 x o f { f n P R O G } s , 0001500 { f n S E L E C T Q } s , 0001520 { l i s p L A M B D A } e x 0001540 p r e s s i o n s , { f n S 0001560 E T Q } s , e t a l . \r I t 0001600 k n o w s h o w v a r i a 0001620 b l e s a r e b o u n d , 0001640 a n d t h a t t h e a r g 0001660 u m e n t o f { l i s p N 0001700 L A M B D A } s a r e n o t 0001720 e v a l u a t e d . { f o o t 0001740 \r T h e u s e r c a n i 0001760 n f o r m { f n D W I M I F 0002000 Y } o f a f u n c t i o n 0002020 o r m a c r o ' s n o n s 0002040 t a n d a r d b i n d i n g 0002060 o r e v a l u a t i o n b y 0002100 g i v i n g i t a s u i 0002120 t a b l e { i n d e x I N F 0002140 O P r o p } { p r o p I N F 0002160 O } p r o p e r t y ( { P a 0002200 g e R e f P r o p I N F O } 0002220 ) . \r } { c o m m e n t e n d 0002240 f o o t n o t e } \r I n t h e 0002260 c o u r s e o f i t s a 0002300 n a l y s i s o f a p a r 0002320 t i c u l a r e x p r e s s i 0002340 o n , { f n D W I M I F Y } 0002360 b u i l d s a l i s t o 0002400 f t h e b o u n d v a r i 0002420 a b l e s f r o m t h e { 0002440 l i s p L A M B D A } e x p 0002460 r e s s i o n s a n d { f n 0002500 P R O G } s t h a t i t 0002520 e n c o u n t e r s . I t 0002540 u s e s t h i s l i s t f 0002560 o r s p e l l i n g c o r r 0002600 e c t i o n s . { f n D W 0002620 I M I F Y } a l s o k n o w 0002640 s n o t t o t r y t o 0002660 " c o r r e c t " v a r i a b 0002700 l e s t h a t a r e o n 0002720 t h i s l i s t \r s i n c e 0002740 t h e y w o u l d b e b o 0002760 u n d i f t h e e x p r e 0003000 s s i o n w e r e a c t u a 0003020 l l y b e i n g r u n . 0003040 H o w e v e r , n o t e t h 0003060 a t { f n D W I M I F Y } 0003100 c a n n o t , a p r i o r i 0003120 , k n o w a b o u t v a r 0003140 i a b l e s t h a t a r e 0003160 u s e d f r e e l y b u t 0003200 w o u l d b e b o u n d i 0003220 n a h i g h e r f u n c t 0003240 i o n i f t h e e x p r e 0003260 s s i o n w e r e e v a l u 0003300 a t e d i n i t s n o r m 0003320 a l c o n t e x t . T h e 0003340 r e f o r e , { f n D W I M 0003360 I F Y } w i l l t r y t o 0003400 " c o r r e c t " t h e s e 0003420 v a r i a b l e s . { f o o t 0003440 \r { f n D W I M I F Y } r e 0003460 b i n d s { i n d e x F I X 0003500 S P E L L D E F A U L T V a r 0003520 } { v a r F I X S P E L L D E 0003540 F A U L T } t o { l i s p 0003560 N } , s o t h a t i f t 0003600 h e u s e r i s n o t a 0003620 t t h e t e r m i n a l w 0003640 h e n \r d w i m i f y i n g ( 0003660 o r c o m p i l i n g ) , s 0003700 p e l l i n g c o r r e c t i 0003720 o n s w i l l n o t b e 0003740 p e r f o r m e d . \r } { c o m 0003760 m e n t e n d f o o t n o t e 0004000 } \r S i m i l a r l y , { f n 0004020 D W I M I F Y } w i l l a 0004040 t t e m p t t o c o r r e c 0004060 t f o r m s f o r w h i c 0004100 h { f n C A R } i s u n 0004120 d e f i n e d , e v e n w h 0004140 e n t h e f o r m i s n 0004160 o t i n e r r o r f r o m 0004200 t h e u s e r ' s s t a n 0004220 d p o i n t , b u t t h e 0004240 c o r r e s p o n d i n g f u 0004260 n c t i o n h a s s i m p l 0004300 y n o t y e t b e e n d 0004320 e f i n e d . \r \r \r { f n D W 0004340 I M I F Y } w i l l a l s o 0004360 i n f o r m t h e u s e r 0004400 w h e n i t e n c o u n t 0004420 e r s a n e x p r e s s i o 0004440 n \r w i t h t o o { i t m 0004460 a n y } a r g u m e n t s , { 0004500 f o o t \r u n l e s s { v a r 0004520 D W I M C H E C K # A R G S F 0004540 L G } = { l i s p N I L } ( 0004560 i n i t i a l l y { l i s p 0004600 T } ) . \r } { c o m m e n t e 0004620 n d f o o t n o t e } \r b e c a 0004640 u s e s u c h a n o c c u 0004660 r r e n c e , a l t h o u g h 0004700 d o e s n o t c a u s e 0004720 a n e r r o r i n t h e 0004740 I n t e r l i s p i n t e r p 0004760 r e t e r , n e v e r t h e l 0005000 e s s i s f r e q u e n t l 0005020 y s y m p t o m a t i c o f 0005040 a p a r e n t h e s i s e 0005060 r r o r . \r F o r e x a m p l 0005100 e , i f t h e u s e r w 0005120 r o t e { l i s p ( C O N S 0005140 ( Q U O T E F O O X ) ) } 0005160 i n s t e a d o f { l i s 0005200 p ( C O N S ( Q U O T E F 0005220 O O ) X ) } , { f n D W I 0005240 M I F Y } w i l l p r i n t 0005260 : { i n d e x P O S S I B L E 0005300 P A R E N T H E S I S E R R 0005320 O R E r r o r } \r \r { l i s p 0005340 c o d e \r P O S S I B L E P A 0005360 R E N T H E S I S E R R O R 0005400 I N \r ( Q U O T E F O O X ) 0005420 \r T O O M A N Y A R G U M E 0005440 N T S ( M O R E T H A N 1 0005460 ) } \r \r \r { f n D W I M I F Y 0005500 } w i l l a l s o c h e c 0005520 k t o s e e i f a { f 0005540 n P R O G } l a b e l c o 0005560 n t a i n s a c l i s p c 0005600 h a r a c t e r , { f o o t \r u 0005620 n l e s s { i n d e x D W I 0005640 M C H E C K P R O G L A B E L S 0005660 F L G V a r } { v a r D W I 0005700 M C H E C K P R O G L A B E L S 0005720 F L G } = { l i s p N I L } 0005740 ( i n i t i a l l y { l i s p 0005760 T } ) , o r t h e l a b 0006000 e l i s a m e m b e r o 0006020 f { v a r N O F I X V A R S 0006040 L S T } . \r } { c o m m e n t 0006060 e n d f o o t n o t e } \r a n d 0006100 i f s o , w i l l a l e 0006120 r t t h e u s e r b y p 0006140 r i n t i n g t h e m e s s 0006160 a g e { l i s p S U S P I C 0006200 I O U S P R O G L A B E L } 0006220 , { i n d e x S U S P I C I O 0006240 U S P R O G L A B E L E r 0006260 r o r } f o l l o w e d b y 0006300 t h e l a b e l . \r T h e 0006320 { f n P R O G } l a b e l 0006340 w i l l { i t n o t } b e 0006360 t r e a t e d a s C L I S 0006400 P . \r \r \r N o t e t h a t i 0006420 n m o s t c a s e s , a n 0006440 a t t e m p t t o t r a n 0006460 s f o r m a f o r m t h a 0006500 t i s a l r e a d y a s 0006520 t h e u s e r i n t e n d e 0006540 d w i l l h a v e n o e 0006560 f f e c t ( b e c a u s e t 0006600 h e r e w i l l b e n o t 0006620 h i n g t o w h i c h t h 0006640 a t f o r m c o u l d r e 0006660 a s o n a b l y b e t r a n 0006700 s f o r m e d ) . H o w e v 0006720 e r , i n o r d e r t o 0006740 a v o i d n e e d l e s s c 0006760 a l l s t o D W I M o r 0007000 t o a v o i d p o s s i b l 0007020 e c o n f u s i o n , t h e 0007040 u s e r c a n i n f o r m 0007060 { f n D W I M I F Y } { i 0007100 t n o t } t o a t t e m p 0007120 t c o r r e c t i o n s o r 0007140 t r a n s f o r m a t i o n s 0007160 o n c e r t a i n f u n c 0007200 t i o n s o r v a r i a b l 0007220 e s b y a d d i n g t h e 0007240 m t o t h e l i s t { i 0007260 n d e x N O F I X F N S L S T 0007300 V a r } { v a r N O F I X F 0007320 N S L S T } o r { i n d e x 0007340 N O F I X V A R S L S T V a 0007360 r } { v a r N O F I X V A R S 0007400 L S T } r e s p e c t i v e l 0007420 y . N o t e t h a t t h 0007440 e u s e r c o u l d a c h 0007460 i e v e t h e s a m e e f 0007500 f e c t b y s i m p l y s 0007520 e t t i n g t h e c o r r e 0007540 s p o n d i n g v a r i a b l 0007560 e s , a n d g i v i n g t 0007600 h e f u n c t i o n s d u m 0007620 m y d e f i n i t i o n s . \r 0007640 \r { f n D W I M I F Y } w i 0007660 l l n e v e r a t t e m p t 0007700 c o r r e c t i o n s o n 0007720 g l o b a l v a r i a b l e s 0007740 { i n d e x g l o b a l v a 0007760 r i a b l e s } , i . e . , 0010000 v a r i a b l e s t h a t a 0010020 r e a m e m b e r o f t 0010040 h e l i s t { v a r G L O 0010060 B A L V A R S } { i n d e x G 0010100 L O B A L V A R S V a r } , 0010120 o r h a v e t h e p r o p 0010140 e r t y { p r o p G L O B A 0010160 L V A R } { i n d e x G L O B 0010200 A L V A R P r o p } w i t h 0010220 v a l u e { l i s p T } , 0010240 o n t h e i r p r o p e r 0010260 t y l i s t . S i m i l a 0010300 r l y , { f n D W I M I F Y 0010320 } w i l l n o t a t t e m 0010340 p t t o c o r r e c t v a 0010360 r i a b l e s d e c l a r e d 0010400 t o \r b e { l i s p S P E 0010420 C V A R S } i n b l o c k 0010440 d e c l a r a t i o n s o r 0010460 v i a { f n D E C L A R E } 0010500 { i n d e x D E C L A R E F 0010520 n } e x p r e s s i o n s i 0010540 n t h e f u n c t i o n b 0010560 o d y . T h e u s e r c 0010600 a n a l s o d e c l a r e 0010620 v a r i a b l e s t h a t a 0010640 r e s i m p l y u s e d f 0010660 r e e l y i n a f u n c t 0010700 i o n b y u s i n g t h e 0010720 { l i s p U S E D F R E E } 0010740 { i n d e x U S E D F R E E 0010760 ( C L I S P d e c l a r a t i 0011000 o n ) } d e c l a r a t i o n 0011020 . \r \r \r { f n D W I M I F Y } 0011040 a n d { i n d e x D W I M 0011060 I F Y F N S F N } { f n D W 0011100 I M I F Y F N S } ( u s e d 0011120 t o { f n D W I M I F Y } 0011140 s e v e r a l f u n c t i o n 0011160 s ) m a i n t a i n t w o 0011200 i n t e r n a l l i s t s o 0011220 f t h o s e f u n c t i o n 0011240 s a n d v a r i a b l e s 0011260 f o r w h i c h c o r r e c 0011300 t i o n s w e r e u n s u c 0011320 c e s s f u l l y a t t e m p 0011340 t e d . T h e s e l i s t 0011360 s a r e i n i t i a l i z e 0011400 d t o t h e v a l u e s 0011420 o f { v a r N O F I X F N S 0011440 L S T } a n d { v a r N O 0011460 F I X V A R S L S T } . O n 0011500 c e a n a t t e m p t i s 0011520 m a d e t o f i x a p 0011540 a r t i c u l a r f u n c t i 0011560 o n o r v a r i a b l e , 0011600 a n d t h e a t t e m p t 0011620 f a i l s , t h e f u n c t 0011640 i o n o r v a r i a b l e 0011660 i s a d d e d t o t h e 0011700 c o r r e s p o n d i n g l i 0011720 s t , s o t h a t o n s 0011740 u b s e q u e n t o c c u r r 0011760 e n c e s ( w i t h i n t h 0012000 i s c a l l t o { f n D 0012020 W I M I F Y } o r { f n D 0012040 W I M I F Y F N S } ) , n o 0012060 a t t e m p t a t c o r r e 0012100 c t i o n i s m a d e . 0012120 F o r e x a m p l e , i f 0012140 { l i s p F O O } c a l l s 0012160 { l i s p F I E } s e v e 0012200 r a l t i m e s , a n d { 0012220 l i s p F I E } i s u n d 0012240 e f i n e d a t t h e t i 0012260 m e { l i s p F O O } i s 0012300 d w i m i f i e d , { f n 0012320 D W I M I F Y } w i l l n o 0012340 t b o t h e r w i t h { l 0012360 i s p F I E } a f t e r t 0012400 h e f i r s t o c c u r r e 0012420 n c e . I n o t h e r w 0012440 o r d s , o n c e { f n D 0012460 W I M I F Y } " n o t i c e s 0012500 " a f u n c t i o n o r 0012520 v a r i a b l e , i t n o 0012540 l o n g e r a t t e m p t s 0012560 t o c o r r e c t i t . 0012600 { f n D W I M I F Y } a n d 0012620 { f n D W I M I F Y F N S } 0012640 a l s o " n o t i c e " f 0012660 r e e v a r i a b l e s t h 0012700 a t a r e s e t i n t h 0012720 e e x p r e s s i o n b e i 0012740 n g p r o c e s s e d . M 0012760 o r e o v e r , o n c e { f 0013000 n D W I M I F Y } " n o t i 0013020 c e s " s u c h f u n c t i 0013040 o n s o r v a r i a b l e s 0013060 , i t s u b s e q u e n t l 0013100 y t r e a t s t h e m t h 0013120 e s a m e a s t h o u g h 0013140 t h e y w e r e a c t u a 0013160 l l y d e f i n e d o r s 0013200 e t . \r \r \r N o t e t h a t 0013220 t h e s e i n t e r n a l l 0013240 i s t s a r e l o c a l t 0013260 o e a c h c a l l t o { 0013300 f n D W I M I F Y } a n d \r 0013320 { f n D W I M I F Y F N S } , 0013340 s o t h a t i f a f u 0013360 n c t i o n c o n t a i n i n 0013400 g { l i s p F O O O } , a 0013420 m i s s p e l l e d c a l l 0013440 t o { l i s p F O O } , 0013460 i s { f n D W I M I F Y } e 0013500 d b e f o r e { l i s p F 0013520 O O } i s d e f i n e d o 0013540 r m e n t i o n e d , i f 0013560 t h e f u n c t i o n i s 0013600 { f n D W I M I F Y } e d a 0013620 g a i n a f t e r { l i s p 0013640 F O O } h a s b e e n d 0013660 e f i n e d , t h e c o r r 0013700 e c t i o n w i l l b e m 0013720 a d e . \r \r \r T h e u s e r 0013740 c a n u n d o s e l e c t e 0013760 d t r a n s f o r m a t i o n 0014000 s p e r f o r m e d b y { 0014020 f n D W I M I F Y } , a s 0014040 d e s c r i b e d o n { P a 0014060 g e R e f T a g U n d o i n 0014100 g D W I M } . { i n d e x u n 0014120 d o i n g D W I M c o r r e 0014140 c t i o n s } \r \r \r \r { F n D e 0014160 f { F n N a m e D W I M I F 0014200 Y } { F n A r g s X Q U I 0014220 E T F L G L } \r { T e x t \r P 0014240 e r f o r m s a l l D W I M 0014260 a n d C L I S P c o r r e 0014300 c t i o n s a n d t r a n s 0014320 f o r m a t i o n s o n { a 0014340 r g X } t h a t w o u l d 0014360 b e p e r f o r m e d i f 0014400 { a r g X } w e r e r u 0014420 n , a n d p r i n t s t h 0014440 e r e s u l t u n l e s s 0014460 { a r g Q U I E T F L G } = { 0014500 l i s p T } . \r \r I f { a r 0014520 g X } i s a n a t o m 0014540 a n d { a r g L } i s { 0014560 l i s p N I L } , { a r g 0014600 X } i s t r e a t e d a s 0014620 t h e n a m e o f a f 0014640 u n c t i o n , a n d i t s 0014660 e n t i r e d e f i n i t i 0014700 o n i s d w i m i f i e d . 0014720 I f { a r g X } i s 0014740 a l i s t o r { a r g L 0014760 } i s n o t { l i s p N 0015000 I L } , { a r g X } i s 0015020 t h e e x p r e s s i o n t 0015040 o b e d w i m i f i e d . 0015060 I f { a r g L } i s n 0015100 o t { l i s p N I L } , i 0015120 t i s t h e e d i t p u 0015140 s h - d o w n l i s t l e a 0015160 d i n g t o { a r g X } , 0015200 a n d i s u s e d f o r 0015220 d e t e r m i n i n g c o n 0015240 t e x t , i . e . , w h a t 0015260 b o u n d v a r i a b l e s 0015300 w o u l d b e i n e f f 0015320 e c t w h e n { a r g X } 0015340 w a s e v a l u a t e d , 0015360 w h e t h e r { a r g X } 0015400 i s a f o r m o r s e q 0015420 u e n c e o f f o r m s , 0015440 e . g . , a { f n C O N D 0015460 } c l a u s e , e t c . \r \r 0015500 I f { a r g X } i s a n 0015520 i t e r a t i v e s t a t e 0015540 m e n t a n d { a r g L } 0015560 i s { l i s p N I L } , 0015600 { f n D W I M I F Y } w i l 0015620 l a l s o p r i n t t h e 0015640 t r a n s l a t i o n , i . 0015660 e . , w h a t i s s t o r 0015700 e d i n t h e h a s h a 0015720 r r a y . \r } } \r \r \r \r { F n D 0015740 e f { F n N a m e D W I M I 0015760 F Y F N S } { F n A r g s F 0016000 N { s u b 1 } { e l l i p s 0016020 i s } F N { s u b N } } \r { 0016040 T y p e N O S P R E A D N L 0016060 A M B D A } \r { T e x t \r D w i 0016100 m i f i e s e a c h o f t 0016120 h e f u n c t i o n s g i v 0016140 e n . I f o n l y o n e 0016160 a r g u m e n t i s g i v 0016200 e n , i t i s e v a l u e 0016220 d . I f i t s v a l u e 0016240 i s a l i s t , t h e 0016260 f u n c t i o n s o n t h i 0016300 s l i s t a r e d w i m i 0016320 f i e d . I f o n l y o 0016340 n e a r g u m e n t i s g 0016360 i v e n , i t i s a t o m 0016400 i c , i t s v a l u e i s 0016420 n o t a l i s t , a n d 0016440 i t i s t h e n a m e 0016460 o f a k n o w n f i l e , 0016500 { f n D W I M I F Y F N S } 0016520 w i l l o p e r a t e o n 0016540 { l i s p ( F I L E F N S L 0016560 S T { a r g F N { s u b 1 0016600 } } ) } , e . g . { l i s p 0016620 ( D W I M I F Y F N S F O O 0016640 . L S P ) } w i l l d w i m 0016660 i f y e v e r y f u n c t i 0016700 o n i n t h e f i l e { 0016720 l i s p F O O . L S P } . \r \r 0016740 E v e r y 3 0 s e c o n d s 0016760 , { f n D W I M I F Y F N S 0017000 } p r i n t s t h e n a m 0017020 e o f t h e f u n c t i o 0017040 n i t i s p r o c e s s i 0017060 n g , a l a { f n P R E 0017100 T T Y P R I N T } . \r \r { n o t 0017120 e s h o u l d b e f i x e 0017140 d t o p r i n t o u t n 0017160 a m e o f e a c h f u n c 0017200 t i o n a s i t i s p r 0017220 o c e s s e d - - l m m } \r \r 0017240 V a l u e i s a l i s t 0017260 o f t h e f u n c t i o n s 0017300 d w i m i f i e d . \r } } \r \r 0017320 { V a r D e f { N a m e D W 0017340 I M I N M A C R O S F L G } \r { 0017360 T e x t \r C o n t r o l s h o 0017400 w { f n D W I M I F Y } t 0017420 r e a t s t h e a r g u m e 0017440 n t s i n a " c a l l " 0017460 t o a m a c r o , i . e . 0017500 , w h e r e t h e { f n 0017520 C A R } o f t h e f o r m 0017540 i s u n d e f i n e d , b 0017560 u t h a s a m a c r o d 0017600 e f i n i t i o n . I f { 0017620 v a r D W I M I N M A C R O S 0017640 F L G } i s { l i s p T } 0017660 , t h e n m a c r o s a r 0017700 e t r e a t e d a s { l i 0017720 s p L A M B D A } f u n c t 0017740 i o n s , i . e . , t h e 0017760 a r g u m e n t s a r e a s 0020000 s u m e d t o b e e v a l 0020020 u a t e d , w h i c h m e a 0020040 n s t h a t { f n D W I M 0020060 I F Y } w i l l d e s c e n 0020100 d i n t o t h e a r g u m 0020120 e n t l i s t . I f { v 0020140 a r D W I M I N M A C R O S F 0020160 L G } i s { l i s p N I L 0020200 } , m a c r o s a r e t r 0020220 e a t e d a s { l i s p N 0020240 L A M B D A } f u n c t i o n 0020260 s . { v a r D W I M I N M 0020300 A C R O S F L G } i s i n i 0020320 t i a l l y { l i s p T } . 0020340 \r } } \r \r { P r o p D e f { N 0020360 a m e I N F O } \r { T e x t \r 0020400 { i n d e x * P R I M A R Y * 0020420 I N F O P r o p } \r U s e d 0020440 t o i n f o r m { f n D 0020460 W I M I F Y } o f n o n s t 0020500 a n d a r d b e h a v i o r 0020520 o f p a r t i c u l a r f o 0020540 r m s w i t h r e s p e c t 0020560 t o e v a l u a t i o n , 0020600 b i n d i n g o f a r g u m 0020620 e n t s , e t c . T h e 0020640 { P r o p I N F O } p r o p 0020660 e r t y o f a l i t a t o 0020700 m i s a s i n g l e a t 0020720 o m o r l i s t o f a t 0020740 o m s c h o s e n f r o m 0020760 a m o n g t h e f o l l o w 0021000 i n g : \r \r { B e g i n L a b 0021020 e l e d L i s t i n t e r p r 0021040 e t a t i o n o f I N F O } 0021060 \r \r { N a m e { L i s p E V 0021100 A L } { i n d e x E V A L L 0021120 i t a t o m } } \r { T e x t I 0021140 n f o r m s { f n D W I M I 0021160 F Y } ( a n d C L I S P a 0021200 n d M a s t e r s c o p e ) 0021220 t h a t a n n l a m b d a 0021240 f u n c t i o n { i t d o e 0021260 s } e v a l u a t e i t s 0021300 a r g u m e n t s . C a n 0021320 a l s o b e p l a c e d o 0021340 n a m a c r o n a m e t 0021360 o o v e r r i d e t h e b 0021400 e h a v i o r o f { v a r 0021420 D W I M I N M A C R O S F L G } 0021440 = { l i s p N I L } . } \r 0021460 \r { N a m e { L i s p N O E 0021500 V A L } { i n d e x N O E V A 0021520 L L i t a t o m } \r { T e x t 0021540 I n f o r m s { f n D W I 0021560 M I F Y } t h a t a m a c 0021600 r o d o e s { i t n o t } 0021620 e v a l u a t e a l l o f 0021640 i t s a r g u m e n t s , 0021660 e v e n w h e n { v a r D 0021700 W I M I N M A C R O S F L G } 0021720 = { l i s p T } . } \r \r { N 0021740 a m e { L i s p B I N D S } 0021760 { i n d e x B I N D S L i t 0022000 a t o m } } \r { T e x t P l a 0022020 c e d o n t h e { p r o p 0022040 I N F O } p r o p e r t y 0022060 o f a f u n c t i o n o r 0022100 t h e { f n C A R } o f 0022120 a s p e c i a l f o r m 0022140 t o i n f o r m { f n D W 0022160 I M I F Y } t h a t t h e 0022200 f u n c t i o n o r f o r m 0022220 b i n d s v a r i a b l e s 0022240 . I n t h i s c a s e , 0022260 { f n D W I M I F Y } a s 0022300 s u m e s t h a t { f n C 0022320 A D R } o f t h e f o r m 0022340 i s t h e v a r i a b l e 0022360 l i s t , i . e . , a l 0022400 i s t o f l i t a t o m s , 0022420 o r l i s t s o f t h e 0022440 f o r m { l i s p ( { a r 0022460 g V A L } { a r g V A L U 0022500 E } ) } . { l i s p L A M 0022520 B D A } , { l i s p N L A M 0022540 B D A } , { f n P R O G } , 0022560 a n d { f n R E S E T V A 0022600 R S } a r e h a n d l e d 0022620 i n t h i s f a s h i o n . 0022640 } \r \r { N a m e { L i s p L 0022660 A B E L S } { i n d e x L A B 0022700 E L S L i t a t o m } } \r { T 0022720 e x t I n f o r m s { f n 0022740 C L I S P I F Y } t h a t t 0022760 h e f o r m i n t e r p r e 0023000 t s t o p - l e v e l l i t 0023020 a t o m s a s l a b e l s , 0023040 s o t h a t { f n C L I 0023060 S P I F Y } w i l l n e v e 0023100 r i n t r o d u c e a n a 0023120 t o m ( b y p a c k i n g ) 0023140 a t t h e t o p l e v e 0023160 l o f t h e e x p r e s s 0023200 i o n . { f n P R O G } 0023220 i s h a n d l e d i n t h 0023240 i s f a s h i o n . } \r \r \r { 0023260 E n d L a b e l e d L i s t 0023300 i n t e r p r e t a t i o n o 0023320 f I N F O } \r \r } } \r \r { V a 0023340 r D e f { N a m e N O F I X 0023360 F N S L S T } \r { T e x t \r L i 0023400 s t o f f u n c t i o n s 0023420 t h a t { f n D W I M I F Y 0023440 } w i l l n o t t r y t 0023460 o c o r r e c t . \r } } \r \r \r 0023500 \r { V a r D e f { N a m e N 0023520 O F I X V A R S L S T } \r { T e 0023540 x t \r L i s t o f v a r i a 0023560 b l e s t h a t { f n D W 0023600 I M I F Y } w i l l n o t 0023620 t r y t o c o r r e c t . \r 0023640 } } \r \r \r \r { V a r D e f { N 0023660 a m e N O S P E L L F L G } \r 0023700 { T e x t \r I f { l i s p T 0023720 } , { f n D W I M I F Y } 0023740 w i l l n o t p e r f o r m 0023760 a n y s p e l l i n g c o 0024000 r r e c t i o n s . I n i t 0024020 i a l l y { l i s p N I L } 0024040 . { v a r N O S P E L L F 0024060 L G } i s r e s e t t o 0024100 { l i s p T } w h e n c o 0024120 m p i l i n g f u n c t i o n 0024140 s w h o s e d e f i n i t i 0024160 o n s a r e o b t a i n e d 0024200 f r o m a f i l e , a s 0024220 o p p o s e d t o b e i n 0024240 g i n c o r e . \r } } \r \r \r 0024260 \r { V a r D e f { N a m e C 0024300 L I S P H E L P F L G } \r { T e 0024320 x t \r I f { l i s p N I L } 0024340 , { f n D W I M I F Y } w 0024360 i l l n o t a s k t h e 0024400 u s e r f o r a p p r o v a 0024420 l o f a n y C L I S P t 0024440 r a n s f o r m a t i o n s . 0024460 I n s t e a d , i n t h o 0024500 s e s i t u a t i o n s w h 0024520 e r e a p p r o v a l w o u 0024540 l d b e r e q u i r e d , 0024560 t h e e f f e c t i s t h 0024600 e s a m e a s t h o u g h 0024620 t h e u s e r h a d b e 0024640 e n a s k e d a n d s a i 0024660 d { l i s p N O } . I n 0024700 i t i a l l y { l i s p T } 0024720 . \r } } \r \r \r \r \r { V a r D e f 0024740 { N a m e D W I M I F Y C O 0024760 M P F L G } \r { T e x t \r I f 0025000 { l i s p T } , { f n D W 0025020 I M I F Y } i s c a l l e d 0025040 b e f o r e c o m p i l i n 0025060 g a n e x p r e s s i o n . 0025100 I n i t i a l l y { l i s 0025120 p N I L } . \r } } \r \r \r \r { V 0025140 a r D e f { N a m e D W I M 0025160 C H E C K # A R G S F L G } \r { 0025200 T e x t \r I f { l i s p T } 0025220 , c a u s e s { f n D W I 0025240 M I F Y } t o c h e c k f 0025260 o r t o o m a n y a r g u 0025300 m e n t s i n a f o r m . 0025320 I n i t i a l l y { l i s 0025340 p T } . \r } } \r \r \r \r { V a r 0025360 D e f { N a m e D W I M C H 0025400 E C K P R O G L A B E L S F L G 0025420 } \r { T e x t \r I f { l i s p 0025440 T } , c a u s e s { f n 0025460 D W I M I F Y } t o c h e c 0025500 k w h e t h e r a { f n 0025520 P R O G } l a b e l c o n t 0025540 a i n s a C L I S P c h a 0025560 r a c t e r . I n i t i a l 0025600 l y { l i s p T } . \r } } \r 0025620 \r \r \r { V a r D e f { N a m e 0025640 D W I M E S S G A G } \r { T e 0025660 x t \r I f { l i s p T } , 0025700 s u p p r e s s e s a l l { 0025720 f n D W I M I F Y } e r r o 0025740 r m e s s a g e s . I n i 0025760 t i a l l y { l i s p N I L 0026000 } . \r } } \r \r \r { V a r D e f 0026020 { N a m e C L I S P R E T R A 0026040 N F L G } \r { T e x t \r I f { 0026060 l i s p T } , i n f o r m s 0026100 { f n D W I M I F Y } t o 0026120 ( r e ) t r a n s l a t e a 0026140 l l e x p r e s s i o n s w 0026160 h i c h h a v e r e m o t e 0026200 t r a n s l a t i o n s i n 0026220 t h e C L I S P h a s h 0026240 a r r a y . I n i t i a l l 0026260 y { l i s p N I L } . \r \r { 0026300 n o t e T h i s i s p r i 0026320 m a r i l y u s e d t o t 0026340 e l l I n t e r l i s p t o 0026360 " d o i t a g a i n " . } 0026400 \r } } \r \r \r \r { i n d e x * E 0026420 N D * D W I M I F Y F N } \r 0026440 \r \r { B e g i n N o t e } \r D 0026460 a t e : 6 J U N 1 9 7 7 0026500 2 3 1 0 - P D T \r F r o m : 0026520 T E I T E L M A N \r T o : 0026540 M A N U A L \r \r d o c u m e n t 0026560 t h e f a c t t h a t d 0026600 w i m i f y m a k e s u s e 0026620 o f s i d e p r o p e r t 0026640 y o f h i s t o r y , a n 0026660 d t h a t u s e r m i g h 0026700 t w a n t t o r e b i n d 0026720 l i s p x h i s t t o n i 0026740 l o r s o m e s u c h i 0026760 f h e i s u s i n g d w 0027000 i m i f y a s a p r o d u 0027020 c t i o n t o o l . \r { E n d 0027040 N o t e } \r \r { B e g i n N 0027060 o t e } \r D a t e : 1 1 D E 0027100 C 1 9 8 1 2 1 5 6 - P S T \r 0027120 F r o m : M A S I N T E R \r S 0027140 u b j e c t : D W I M I F Y 0027160 e t c . \r T o : k a p l a 0027200 n , l i s p \r c c : m a 0027220 s i n t e r \r \r I f i x e d 0027240 i t s o t h a t e v e n 0027260 i f D F N F L G = P R O P t 0027300 h a t D W I M w i l l u n 0027320 s a v e f u n c t i o n d e 0027340 f i n i t i o n s . T h e t 0027360 e s t t h e r e w a s j u 0027400 s t w r o n g ; o f t e n 0027420 I d e f i n e a n e w f 0027440 u n c t i o n i n A B C f 0027460 o r i m m e d i a t e u s e 0027500 , b u t s i n c e D F N F 0027520 L G = P R O P i t g e t s 0027540 p u t o n t h e p r o p l 0027560 i s t . \r { E n d N o t e } 0027600 \r \r } { E n d S u b S e c D 0027620 W I M I F Y } \r \r \r \r \r \r \r { B 0027640 e g i n S u b S e c C L I S 0027660 P I F Y } \r { T i t l e C L I 0027700 S P I F Y } \r { T e x t \r \r { i 0027720 n d e x * B E G I N * C L I 0027740 S P I F Y F N } \r { i n d e x 0027760 * P R I M A R Y * C L I S P 0030000 I F Y F N } \r \r { f n C L I 0030020 S P I F Y } c o n v e r t s 0030040 I n t e r l i s p e x p r e s 0030060 s i o n s t o C L I S P . 0030100 N o t e t h a t t h e e 0030120 x p r e s s i o n g i v e n 0030140 t o { f n C L I S P I F Y } 0030160 n e e d { i t n o t } h 0030200 a v e o r i g i n a l l y b 0030220 e e n i n p u t a s C L I 0030240 S P , i . e . , { f n C L 0030260 I S P I F Y } c a n b e u 0030300 s e d o n f u n c t i o n s 0030320 t h a t w e r e w r i t t 0030340 e n b e f o r e C L I S P 0030360 w a s e v e n i m p l e m e 0030400 n t e d . { f n C L I S P 0030420 I F Y } i s c o g n i z a n 0030440 t o f d e c l a r a t i o n 0030460 r u l e s a s w e l l a 0030500 s a l l o f t h e p r e 0030520 c e d e n c e r u l e s . 0030540 F o r e x a m p l e , { f n 0030560 C L I S P I F Y } w i l l 0030600 c o n v e r t { l i s p ( I 0030620 P L U S A ( I T I M E S B 0030640 C ) ) } i n t o { l i s p 0030660 A + B * C } , b u t { l i 0030700 s p ( I T I M E S A ( I P 0030720 L U S B C ) ) } i n t o 0030740 { l i s p A * ( B + C ) } . 0030760 { f n C L I S P I F Y } h 0031000 a n d l e s s u c h c a s e 0031020 s b y f i r s t { f n D 0031040 W I M I F Y } i n g t h e e 0031060 x p r e s s i o n . { f n 0031100 C L I S P I F Y } a l s o k 0031120 n o w s h o w t o h a n d 0031140 l e e x p r e s s i o n s c 0031160 o n s i s t i n g o f a m 0031200 i x t u r e o f I n t e r l 0031220 i s p a n d C L I S P , e 0031240 . g . , { l i s p ( I P L U 0031260 S A B * C ) } i s c o n 0031300 v e r t e d t o { l i s p 0031320 A + B * C } , b u t { l i s 0031340 p ( I T I M E S A B + C ) 0031360 } t o { l i s p ( A * ( B 0031400 + C ) ) } . { f n C L I S 0031420 P I F Y } c o n v e r t s c 0031440 a l l s t o t h e s i x 0031460 b a s i c m a p p i n g f u 0031500 n c t i o n s , { f n M A P 0031520 } , { f n M A P C } , { f 0031540 n M A P C A R } , { f n M 0031560 A P L I S T } , { f n M A P 0031600 C O N C } , a n d { l i s p 0031620 M A P C O N } , i n t o e 0031640 q u i v a l e n t i t e r a t 0031660 i v e s t a t e m e n t s . 0031700 I t a l s o c o n v e r t 0031720 s c e r t a i n e a s i l y 0031740 r e c o g n i z a b l e i n 0031760 t e r n a l { f n P R O G } 0032000 l o o p s t o t h e c o 0032020 r r e s p o n d i n g i t e r 0032040 a t i v e s t a t e m e n t s 0032060 . { f n C L I S P I F Y } 0032100 c a n c o n v e r t a l l 0032120 i t e r a t i v e s t a t e 0032140 m e n t s i n p u t i n C 0032160 L I S P b a c k t o C L I 0032200 S P , r e g a r d l e s s o 0032220 f h o w c o m p l i c a t e 0032240 d t h e t r a n s l a t i o 0032260 n w a s , b e c a u s e t 0032300 h e o r i g i n a l C L I S 0032320 P i s s a v e d . \r \r \r { f 0032340 n C L I S P I F Y } i s n 0032360 o t d e s t r u c t i v e t 0032400 o t h e o r i g i n a l I 0032420 n t e r l i s p e x p r e s s 0032440 i o n , i . e . , { f n C 0032460 L I S P I F Y } p r o d u c e 0032500 s a n e w e x p r e s s i 0032520 o n w i t h o u t c h a n g 0032540 i n g t h e o r i g i n a l 0032560 . { f o o t \r T h e n e w 0032600 e x p r e s s i o n m a y h 0032620 o w e v e r c o n t a i n s 0032640 o m e " p i e c e s " o f 0032660 t h e o r i g i n a l , s i 0032700 n c e { f n C L I S P I F Y 0032720 } a t t e m p t s t o m i 0032740 n i m i z e t h e n u m b e 0032760 r o f { l i s p C O N S } 0033000 e s b y n o t c o p y i n 0033020 g s t r u c t u r e w h e n 0033040 e v e r p o s s i b l e . \r } 0033060 { c o m m e n t e n d f o o t 0033100 n o t e } \r { f n C L I S P I 0033120 F Y } w i l l n o t c o n 0033140 v e r t e x p r e s s i o n s 0033160 a p p e a r i n g a s a r 0033200 g u m e n t s t o { l i s p 0033220 N L A M B D A } f u n c t i 0033240 o n s . { f o o t \r E x c e p 0033260 t f o r t h o s e f u n c 0033300 t i o n s w h o s e { p r o 0033320 p I N F O } { i n d e x I N 0033340 F O P r o p } p r o p e r t 0033360 y i s o r c o n t a i n s 0033400 t h e a t o m { l i s p 0033420 E V A L } . { f n C L I 0033440 S P I F Y } a l s o c o n t 0033460 a i n s b u i l t i n i n 0033500 f o r m a t i o n e n a b l i 0033520 n g i t t o p r o c e s s 0033540 s p e c i a l f o r m s s 0033560 u c h a s { f n P R O G } 0033600 , { f n S E L E C T Q } , 0033620 e t c . I f t h e { l i 0033640 s p I N F O } p r o p e r t 0033660 y i s o r c o n t a i n s 0033700 t h e a t o m { l i s p 0033720 L A B E L S } { i n d e x L A 0033740 B E L S L i t a t o m } , { 0033760 f n C L I S P I F Y } w i l 0034000 l n e v e r c r e a t e a 0034020 n a t o m ( b y p a c k i 0034040 n g ) a t t h e t o p l 0034060 e v e l o f t h e e x p r 0034100 e s s i o n . { f n P R O 0034120 G } i s h a n d l e d i n 0034140 t h i s f a s h i o n . \r } 0034160 { c o m m e n t e n d f o o t 0034200 n o t e } \r \r \r N o t e : D 0034220 i s a b l i n g a C L I S P 0034240 o p e r a t o r w i t h { 0034260 f n C L D I S A B L E } ( { 0034300 P a g e R e f F n C L D I S 0034320 A B L E } ) w i l l a l s o 0034340 d i s a b l e t h e c o r 0034360 r e s p o n d i n g { f n C 0034400 L I S P I F Y } t r a n s f o 0034420 r m a t i o n . \r T h u s , i 0034440 f { l i s p _ } i s " t 0034460 u r n e d o f f " , { l i s 0034500 p A _ B } w i l l n o t 0034520 t r a n s f o r m t o { l i 0034540 s p ( S E T Q A B ) } , 0034560 n o r v i c e v e r s a . \r 0034600 \r \r { F n D e f { F n N a m e 0034620 C L I S P I F Y } { F n A r 0034640 g s X L } \r { T e x t \r C l 0034660 i s p i f i e s { a r g X } 0034700 . I f { a r g X } i s 0034720 a n a t o m a n d { a r 0034740 g L } i s { l i s p N I 0034760 L } , { a r g X } i s t 0035000 r e a t e d a s t h e n a 0035020 m e o f a f u n c t i o n 0035040 , a n d i t s d e f i n i 0035060 t i o n ( o r { l i s p E 0035100 X P R } p r o p e r t y ) i 0035120 s c l i s p i f i e d . A 0035140 f t e r { f n C L I S P I F 0035160 Y } h a s f i n i s h e d , 0035200 { a r g X } i s r e d e 0035220 f i n e d ( u s i n g { l i 0035240 s p / P U T D } ) w i t h 0035260 i t s n e w C L I S P d e 0035300 f i n i t i o n . T h e v 0035320 a l u e o f { f n C L I S 0035340 P I F Y } i s { a r g X } 0035360 . I f { a r g X } i s 0035400 a t o m i c a n d n o t 0035420 t h e n a m e o f a f u 0035440 n c t i o n , s p e l l i n g 0035460 c o r r e c t i o n i s a 0035500 t t e m p t e d . I f t h 0035520 i s f a i l s , a n e r r 0035540 o r i s g e n e r a t e d . 0035560 \r \r I f { a r g X } i s 0035600 a l i s t , o r { a r g 0035620 L } i s n o t { l i s p 0035640 N I L } , { a r g X } i t 0035660 s e l f i s t h e e x p r 0035700 e s s i o n t o b e c l i 0035720 s p i f i e d . I f { a r 0035740 g L } i s n o t { l i s 0035760 p N I L } , i t i s t h 0036000 e e d i t p u s h - d o w n 0036020 l i s t l e a d i n g t o 0036040 { a r g X } a n d i s 0036060 u s e d t o d e t e r m i n 0036100 e c o n t e x t a s w i t 0036120 h { f n D W I M I F Y } , 0036140 a s w e l l a s t o o b 0036160 t a i n t h e l o c a l d 0036200 e c l a r a t i o n s , i f 0036220 a n y . T h e v a l u e 0036240 o f { i n d e x C L I S P I 0036260 F Y F N } { f n C L I S P I 0036300 F Y } i s t h e c l i s p 0036320 i f i e d v e r s i o n o f 0036340 { a r g X } . \r } } \r \r \r 0036360 \r { F n D e f { F n N a m e 0036400 C L I S P I F Y F N S } { F n 0036420 A r g s F N { s u b 1 } { 0036440 e l l i p s i s } F N { s u b 0036460 N } } \r { T y p e N O S P R 0036500 E A D N L A M B D A } \r { T e 0036520 x t \r L i k e { f n D W I M 0036540 I F Y F N S } ( { P a g e R e 0036560 f F n D W I M I F Y F N S } 0036600 ) e x c e p t c a l l s { 0036620 f n C L I S P I F Y } i n s 0036640 t e a d o f { f n D W I M 0036660 I F Y } . \r } } \r \r \r { V a r D 0036700 e f { N a m e C L : F L G } 0036720 \r { T e x t \r A f f e c t s { 0036740 f n C L I S P I F Y } ' s h 0036760 a n d l i n g o f f o r m s 0037000 b e g i n n i n g w i t h 0037020 { f n C A R } , { f n C D 0037040 R } , { e l l i p s i s } { 0037060 f n C D D D D R } , a s w 0037100 e l l a s p a t t e r n m 0037120 a t c h a n d r e c o r d 0037140 e x p r e s s i o n s . I f 0037160 { v a r C L : F L G } i s 0037200 { l i s p N I L } , t h e 0037220 s e a r e n o t t r a n s 0037240 f o r m e d i n t o t h e 0037260 e q u i v a l e n t { l i s p 0037300 : } e x p r e s s i o n s . 0037320 T h i s w i l l p r e v 0037340 e n t { f n C L I S P I F Y 0037360 } f r o m c o n s t r u c t 0037400 i n g a n y e x p r e s s i 0037420 o n e m p l o y i n g a { 0037440 l i s p : } i n f i x o p 0037460 e r a t o r , e . g . , { l 0037500 i s p ( C A D R X ) } w i 0037520 l l n o t b e t r a n s f 0037540 o r m e d t o { l i s p X 0037560 : 2 } . I f { v a r C L 0037600 : F L G } i s { l i s p T 0037620 } , { f n C L I S P I F Y } 0037640 w i l l c o n v e r t t o 0037660 { l i s p : } n o t a t i 0037700 o n o n l y w h e n t h e 0037720 a r g u m e n t i s a t o 0037740 m i c o r a s i m p l e 0037760 l i s t ( a f u n c t i o n 0040000 n a m e a n d o n e a t 0040020 o m i c a r g u m e n t ) . 0040040 I f { v a r C L : F L G } 0040060 i s { l i s p A L L } , 0040100 { f n C L I S P I F Y } w i 0040120 l l c o n v e r t t o { l 0040140 i s p : } e x p r e s s i o 0040160 n s w h e n e v e r p o s s 0040200 i b l e . \r \r { v a r C L : F 0040220 L G } i s i n i t i a l l y 0040240 { l i s p T } . \r } } \r \r \r 0040260 \r { V a r D e f { N a m e C 0040300 L R E M P A R S F L G } \r { T e 0040320 x t \r I f { l i s p T } , 0040340 { f n C L I S P I F Y } w i 0040360 l l r e m o v e p a r e n t 0040400 h e s e s i n c e r t a i n 0040420 c a s e s f r o m s i m p 0040440 l e f o r m s , w h e r e 0040460 " s i m p l e " m e a n s a 0040500 f u n c t i o n n a m e a 0040520 n d o n e o r t w o a t 0040540 o m i c a r g u m e n t s . \r 0040560 F o r e x a m p l e , { l i 0040600 s p ( C O N D ( ( A T O M 0040620 X ) - - ) ) } w i l l { f 0040640 n C L I S P I F Y } t o { 0040660 l i s p ( I F A T O M X 0040700 T H E N - - ) } . H o w e 0040720 v e r , i f { v a r C L R 0040740 E M P A R S F L G } i s s e 0040760 t t o { l i s p N I L } , 0041000 { f n C L I S P I F Y } w 0041020 i l l p r o d u c e { l i s 0041040 p ( I F ( A T O M X ) T 0041060 H E N - - ) } . N o t e 0041100 t h a t r e g a r d l e s s 0041120 o f t h e s e t t i n g o 0041140 f t h i s f l a g , t h e 0041160 e x p r e s s i o n c a n 0041200 b e i n p u t i n e i t h 0041220 e r f o r m . \r \r { v a r C 0041240 L R E M P A R S F L G } i s 0041260 i n i t i a l l y { l i s p 0041300 N I L } . \r } } \r \r \r \r { V a r 0041320 D e f { N a m e C L I S P I 0041340 F Y P A C K F L G } \r { T e x t 0041360 \r { v a r C L I S P I F Y P A 0041400 C K F L G } a f f e c t s t 0041420 h e t r e a t m e n t o f 0041440 i n f i x o p e r a t o r s 0041460 w i t h a t o m i c o p e r 0041500 a n d s . I f { v a r C 0041520 L I S P I F Y P A C K F L G } 0041540 i s { l i s p T } , { f n 0041560 C L I S P I F Y } w i l l 0041600 p a c k t h e s e i n t o 0041620 s i n g l e a t o m s , e . 0041640 g . , { l i s p ( I P L U S 0041660 A ( I T I M E S B C ) ) 0041700 } b e c o m e s { l i s p 0041720 A + B * C } . I f { v a r 0041740 C L I S P I F Y P A C K F L G 0041760 } i s { l i s p N I L } , 0042000 n o p a c k i n g i s d 0042020 o n e , e . g . , t h e a 0042040 b o v e b e c o m e s { l i 0042060 s p A { s p } + { s p } B { s 0042100 p } * { s p } C } . \r \r { v a r 0042120 C L I S P I F Y P A C K F L G 0042140 } i s i n i t i a l l y { 0042160 l i s p T } . \r } } \r \r \r \r { 0042200 V a r D e f { N a m e C L I 0042220 S P I F Y U S E R F N } \r { T e 0042240 x t \r I f { l i s p T } , 0042260 c a u s e s t h e f u n c t 0042300 i o n { l i s p C L I S P I 0042320 F Y U S E R F N } , w h i c h 0042340 s h o u l d b e a f u n 0042360 c t i o n o f o n e a r g 0042400 u m e n t , t o b e c a l 0042420 l e d o n e a c h f o r m 0042440 ( l i s t ) n o t o t h e 0042460 r w i s e r e c o g n i z e d 0042500 b y { f n C L I S P I F Y 0042520 } . I f a n o n - { l i 0042540 s p N I L } v a l u e i s 0042560 r e t u r n e d , i t i s 0042600 t r e a t e d a s t h e 0042620 c l i s p i f i e d f o r m . 0042640 I n i t i a l l y { l i s 0042660 p N I L } \r \r N o t e t h a 0042700 t { v a r C L I S P I F Y U 0042720 S E R F N } m u s t b e b 0042740 o t h s e t a n d d e f i 0042760 n e d t o u s e t h i s 0043000 f e a t u r e . \r } } \r \r \r \r { 0043020 V a r D e f { N a m e F U N 0043040 N Y A T O M L S T } \r { T e x t 0043060 \r S u p p o s e t h e u s e 0043100 r h a s v a r i a b l e s 0043120 n a m e d { l i s p A } , 0043140 { l i s p B } , a n d { l 0043160 i s p A * B } . \r I f { f n 0043200 C L I S P I F Y } w e r e 0043220 t o c o n v e r t { l i s p 0043240 ( I T I M E S A B ) } t 0043260 o { l i s p A * B } , { l 0043300 i s p A * B } w o u l d n 0043320 o t t r a n s l a t e b a c 0043340 k c o r r e c t l y t o { 0043360 l i s p ( I T I M E S A B 0043400 ) } , s i n c e i t w o u 0043420 l d b e t h e n a m e o 0043440 f a v a r i a b l e , a n 0043460 d t h e r e f o r e w o u l 0043500 d n o t c a u s e a n e 0043520 r r o r . T h e u s e r 0043540 c a n p r e v e n t t h i s 0043560 f r o m h a p p e n i n g 0043600 b y a d d i n g { l i s p 0043620 A * B } t o t h e l i s t 0043640 { v a r F U N N Y A T O M L 0043660 S T } . T h e n , { l i s 0043700 p ( I T I M E S A B ) } 0043720 w o u l d { f n C L I S P I 0043740 F Y } t o { l i s p A { s 0043760 p } * { s p } B } . \r \r N o t e 0044000 t h a t { l i s p A * B } 0044020 ' s a p p e a r a n c e o n 0044040 { v a r F U N N Y A T O M L 0044060 S T } w o u l d { i t n o 0044100 t } e n a b l e D W I M a 0044120 n d C L I S P t o d e c o 0044140 d e { l i s p A * B + C } 0044160 a s { l i s p ( I P L U S 0044200 A * B C ) } ; { v a r F U 0044220 N N Y A T O M L S T } i s u 0044240 s e d o n l y b y { f n 0044260 C L I S P I F Y } . T h u s 0044300 , i f a n i d e n t i f i 0044320 e r c o n t a i n s a C L 0044340 I S P c h a r a c t e r , i 0044360 t s h o u l d a l w a y s 0044400 b e s e p a r a t e d ( w i 0044420 t h s p a c e s ) f r o m 0044440 o t h e r o p e r a t o r s . 0044460 F o r e x a m p l e , i 0044500 f { l i s p X * } i s a 0044520 v a r i a b l e , t h e u 0044540 s e r s h o u l d w r i t e 0044560 \r { l i s p ( S E T Q X * 0044600 { a r g F O R M } ) } i n 0044620 C L I S P a s { l i s p X 0044640 * { s p } _ { a r g F O R M } 0044660 } , n o t { l i s p X * _ 0044700 { a r g F O R M } } . I n 0044720 g e n e r a l , i t i s 0044740 b e s t t o a v o i d u s 0044760 e o f i d e n t i f i e r s 0045000 c o n t a i n i n g C L I S 0045020 P c h a r a c t e r o p e r 0045040 a t o r s a s m u c h a s 0045060 p o s s i b l e . \r } } \r \r \r 0045100 { i n d e x * E N D * C L I 0045120 S P I F Y F N } \r \r } { E n d 0045140 S u b S e c C L I S P I F Y 0045160 } \r \r \r \r \r \r \r { B e g i n S 0045200 u b S e c M i s c e l l a n e 0045220 o u s F u n c t i o n s a n 0045240 d V a r i a b l e s } \r { T i 0045260 t l e M i s c e l l a n e o u 0045300 s F u n c t i o n s a n d 0045320 V a r i a b l e s } \r { T e x t 0045340 \r \r \r { n o t e r e m o v e d 0045360 b r a c k e t - d e f i n i n 0045400 g i n f o - m o v e d t 0045420 o S t u f f . C L I S P b r a 0045440 c k e t s } \r \r \r { V a r D e f 0045460 { N a m e C L I S P F L G } 0045500 \r { T e x t \r I f s e t t o 0045520 { l i s p N I L } , d i s 0045540 a b l e s a l l C L I S P 0045560 i n f i x o r p r e f i x 0045600 t r a n s f o r m a t i o n s 0045620 ( b u t d o e s n o t a f 0045640 f e c t { l i s p I F } / { 0045660 l i s p T H E N } / { l i s p 0045700 E L S E } s t a t e m e n t 0045720 s , o r i t e r a t i v e 0045740 s t a t e m e n t s ) . \r \r I f 0045760 { v a r C L I S P F L G } = 0046000 { l i s p T Y P E - I N } , 0046020 C L I S P t r a n s f o r m a 0046040 t i o n s a r e p e r f o r 0046060 m e d o n l y o n e x p r 0046100 e s s i o n s t h a t a r e 0046120 t y p e d i n f o r e v 0046140 a l u a t i o n , i . e . , 0046160 n o t o n u s e r p r o g 0046200 r a m s . \r \r I f { v a r C 0046220 L I S P F L G } = { l i s p T 0046240 } , C L I S P t r a n s f o 0046260 r m a t i o n s a r e p e r 0046300 f o r m e d o n a l l e x 0046320 p r e s s i o n s . \r \r T h e 0046340 i n i t i a l v a l u e f o 0046360 r { v a r C L I S P F L G } 0046400 i s { l i s p T } . { 0046420 f n C L I S P I F Y } i n g 0046440 a n y t h i n g w i l l c a 0046460 u s e { v a r C L I S P F L 0046500 G } t o b e s e t t o 0046520 { l i s p T } . \r } } \r \r \r { 0046540 V a r D e f { N a m e C L I 0046560 S P C H A R S } \r { T e x t \r A 0046600 l i s t o f t h e o p e 0046620 r a t o r s t h a t c a n 0046640 a p p e a r i n t h e i n 0046660 t e r i o r o f a n a t o 0046700 m . C u r r e n t l y { l 0046720 i s p ( + - * / ^ ~ 0046740 ' = _ : < > + - 0046760 ~ = @ ! ) } . \r } } \r \r \r { 0047000 V a r D e f { N a m e C L I 0047020 S P C H A R R A Y } \r { T e x t 0047040 \r A b i t t a b l e o f 0047060 t h e c h a r a c t e r s o 0047100 n { v a r C L I S P C H A R 0047120 S } u s e d f o r c a l l 0047140 s t o { f n S T R P O S L 0047160 } ( { P a g e R e f F n S 0047200 T R P O S L } ) . { v a r 0047220 C L I S P C H A R R A Y } i s 0047240 i n i t i a l i z e d b y 0047260 p e r f o r m i n g { l i s p 0047300 ( S E T Q C L I S P C H A R 0047320 R A Y ( M A K E B I T T A B L 0047340 E C L I S P C H A R S ) ) } . 0047360 \r } } \r \r \r { V a r D e f { N 0047400 a m e C L I S P I N F I X S P 0047420 L S T } \r { T e x t \r A l i s 0047440 t o f i n f i x o p e r a 0047460 t o r s u s e d f o r s p 0047500 e l l i n g c o r r e c t i o 0047520 n . { i n d e x s p e l l i n 0047540 g l i s t s } { i n d e x s 0047560 p e l l i n g c o r r e c t i 0047600 o n } \r } } \r \r \r { V a r D e f 0047620 { N a m e C L I S P A R R A 0047640 Y } \r { T e x t \r H a s h a r 0047660 r a y u s e d f o r s t o 0047700 r i n g C L I S P t r a n s 0047720 l a t i o n s . { v a r C 0047740 L I S P A R R A Y } i s c h 0047760 e c k e d b y { f n F A U 0050000 L T E V A L } a n d { f n 0050020 F A U L T A P P L Y } o n 0050040 e r r o n e o u s f o r m s 0050060 b e f o r e c a l l i n g D 0050100 W I M , a n d b y t h e 0050120 c o m p i l e r . \r } } \r \r \r { 0050140 F n D e f { F n N a m e C L 0050160 I S P T R A N } { F n A r g s 0050200 X T R A N } \r { T e x t \r G 0050220 i v e s { a r g X } t h e 0050240 t r a n s l a t i o n { a r 0050260 g T R A N } b y s t o r i 0050300 n g ( k e y { a r g X } , 0050320 v a l u e { a r g T R A N 0050340 } ) i n t h e h a s h a 0050360 r r a y { v a r C L I S P A 0050400 R R A Y } . { f n C L I S 0050420 P T R A N } i s c a l l e d 0050440 f o r a l l C L I S P t 0050460 r a n s l a t i o n s , v i a 0050500 a n o n - l i n k e d , e 0050520 x t e r n a l f u n c t i o n 0050540 c a l l , s o i t c a n 0050560 b e a d v i s e d . \r } } \r 0050600 \r \r { F n D e f { F n N a m e 0050620 C L I S P D E C } { F n A r 0050640 g s D E C L S T } \r { T e x t 0050660 \r P u t s i n t o e f f e c 0050700 t t h e d e c l a r a t i o 0050720 n s i n { a r g D E C L S 0050740 T } ( s e e { P a g e R e f 0050760 T a g C L I S P D e c l a r 0051000 a t i o n s } ) . { f n C 0051020 L I S P D E C } p e r f o r m 0051040 s s p e l l i n g c o r r e 0051060 c t i o n s o n w o r d s 0051100 n o t r e c o g n i z e d a 0051120 s d e c l a r a t i o n s . 0051140 { f n C L I S P D E C } i 0051160 s u n d o a b l e . \r } } \r \r 0051200 \r \r { F n D e f { F n N a m e 0051220 C L D I S A B L E } { F n A 0051240 r g s O P } \r { T e x t \r D i 0051260 s a b l e s t h e C L I S P 0051300 o p e r a t o r { a r g O 0051320 P } . F o r e x a m p l e 0051340 , { l i s p ( C L D I S A B 0051360 L E ' - ) } m a k e s { l 0051400 i s p - } b e j u s t a 0051420 n o t h e r c h a r a c t e r 0051440 . { f n C L D I S A B L E 0051460 } c a n b e u s e d o n 0051500 a l l C L I S P o p e r a 0051520 t o r s , e . g . , i n f i 0051540 x o p e r a t o r s , p r e 0051560 f i x o p e r a t o r s , i 0051600 t e r a t i v e s t a t e m e 0051620 n t o p e r a t o r s , e t 0051640 c . { f n C L D I S A B L 0051660 E } i s u n d o a b l e . \r 0051700 \r \r { i n d e x d i s a b l i 0051720 n g C L I S P o p e r a t o 0051740 r s } \r \r N o t e : S i m p 0051760 l y r e m o v i n g a c h 0052000 a r a c t e r o p e r a t o r 0052020 f r o m { v a r C L I S P 0052040 C H A R S } w i l l p r e v 0052060 e n t i t f r o m b e i n 0052100 g t r e a t e d a s a C 0052120 L I S P o p e r a t o r w h 0052140 e n i t a p p e a r s a s 0052160 p a r t o f a n a t o m 0052200 , b u t i t w i l l c o 0052220 n t i n u e t o b e a n 0052240 o p e r a t o r w h e n i t 0052260 a p p e a r s a s a s e 0052300 p a r a t e a t o m , e . g 0052320 . ( { l i s p F O O + X 0052340 } ) v s { l i s p F O O + 0052360 X } . \r \r { n o t e t h e r e 0052400 n e e d s t o b e a b 0052420 e t t e r w a y o f r e e 0052440 n a b l i n g C L I S P o p 0052460 e r a t o r s t h a n U N D 0052500 O i n g t h e s t a t e m e 0052520 n t w i t h t h e C L D I 0052540 S A B L E i n i t } \r } } \r 0052560 \r \r \r { V a r D e f { N a m e 0052600 C L I S P I F T R A N F L G } 0052620 \r { T e x t \r A f f e c t s h 0052640 a n d l i n g o f t r a n s 0052660 l a t i o n s o f { l i s p 0052700 I F } | { l i s p T H E N } 0052720 | { l i s p E L S E } s t a 0052740 t e m e n t s ( s e e { P a 0052760 g e R e f T a g I F s t a t 0053000 e m e n t } ) . I f { l i 0053020 s p T } , t h e t r a n s 0053040 l a t i o n s a r e s t o r 0053060 e d e l s e w h e r e , a n 0053100 d t h e ( m o d i f i e d ) 0053120 C L I S P r e t a i n e d . 0053140 I f { l i s p N I L } , 0053160 t h e c o r r e s p o n d i 0053200 n g { f n C O N D } e x p 0053220 r e s s i o n r e p l a c e s 0053240 t h e C L I S P . I n i 0053260 t i a l l y { l i s p T } . 0053300 \r } } \r \r \r \r { i n d e x * P 0053320 R I M A R Y * C L I S P I F Y 0053340 P R E T T Y F L G V a r } \r \r 0053360 { V a r D e f { N a m e C L 0053400 I S P I F Y P R E T T Y F L G } 0053420 \r { T e x t \r I f n o n - { l 0053440 i s p N I L } , c a u s e s 0053460 { f n P R E T T Y P R I N T 0053500 } ( a n d t h e r e f o r e 0053520 { f n P P } a n d { f n 0053540 M A K E F I L E } ) t o { 0053560 f n C L I S P I F Y } s e l 0053600 e c t e d f u n c t i o n d 0053620 e f i n i t i o n s b e f o r 0053640 e p r i n t i n g t h e m 0053660 a c c o r d i n g t o t h e 0053700 f o l l o w i n g i n t e r 0053720 p r e t a t i o n s o f { v 0053740 a r C L I S P I F Y P R E T T 0053760 Y F L G } : \r \r { B e g i n L 0054000 a b e l e d L i s t f o l l o 0054020 w i n g i n t e r p r e t a t 0054040 i o n s o f C L I S P I F Y 0054060 P R E T T Y F L G } \r \r { L a b 0054100 e l { l i s p A L L } } \r { 0054120 I t e m \r C l i s p i f y a l 0054140 l f u n c t i o n s . \r } \r \r 0054160 { L a b e l { l i s p T } 0054200 o r { l i s p E X P R S } } 0054220 \r { I t e m \r C l i s p i f y 0054240 a l l f u n c t i o n s c u 0054260 r r e n t l y d e f i n e d 0054300 a s { l i s p E X P R } s . 0054320 \r } \r \r { L a b e l { l i s p 0054340 C H A N G E S } } \r { I t e m 0054360 \r C l i s p i f y a l l f u 0054400 n c t i o n s m a r k e d a 0054420 s h a v i n g b e e n c h 0054440 a n g e d . \r } \r \r { L a b e l 0054460 a l i s t } \r { I t e m \r C 0054500 l i s p i f y a l l f u n c 0054520 t i o n s i n t h a t l i 0054540 s t . \r } \r \r { E n d L a b e 0054560 l e d L i s t f o l l o w i n 0054600 g i n t e r p r e t a t i o n 0054620 s o f C L I S P I F Y P R E 0054640 T T Y F L G } \r \r { v a r C L 0054660 I S P I F Y P R E T T Y F L G } 0054700 i s ( t e m p o r a r i l y 0054720 ) r e s e t t o { l i s p 0054740 T } w h e n \r { f n M A 0054760 K E F I L E } i s c a l l e 0055000 d w i t h t h e o p t i o 0055020 n { l i s p C L I S P I F Y 0055040 } , a n d r e s e t \r t o 0055060 { l i s p C H A N G E S } w 0055100 h e n t h e f i l e b e i 0055120 n g d u m p e d h a s t h 0055140 e p r o p e r t y \r { p r o p 0055160 F I L E T Y P E } { i n d e x 0055200 F I L E T Y P E P r o p } 0055220 v a l u e { l i s p C L I S 0055240 P } . { i n d e x C L I S P I 0055260 F Y ( M A K E F I L E o p t 0055300 i o n ) } { i n d e x * P R I 0055320 M A R Y * M A K E F I L E a 0055340 n d C L I S P } \r { v a r C 0055360 L I S P I F Y P R E T T Y F L G 0055400 } i s i n i t i a l l y { 0055420 l i s p N I L } . \r \r \r N o t 0055440 e : I f { v a r C L I S 0055460 P I F Y P R E T T Y F L G } i 0055500 s n o n - { l i s p N I L } 0055520 , a n d t h e o n l y t 0055540 r a n s f o r m a t i o n p e 0055560 r f o r m e d b y { l i s p 0055600 D W I M } a r e w e l l 0055620 f o r m e d { l i s p C L I 0055640 S P } t r a n s f o r m a t i 0055660 o n s , i . e . , n o s p 0055700 e l l i n g c o r r e c t i o 0055720 n s , t h e f u n c t i o n 0055740 w i l l { i t n o t } b 0055760 e m a r k e d a s c h a n 0056000 g e d , s i n c e i t w o 0056020 u l d o n l y h a v e t o 0056040 b e r e - c l i s p i f i e 0056060 d a n d r e - p r e t t y p 0056100 r i n t e d w h e n t h e 0056120 f i l e w a s w r i t t e n 0056140 o u t . \r } } \r \r \r \r \r \r { V 0056160 a r D e f { N a m e P R E T 0056200 T Y T R A N F L G } \r { T e x t 0056220 \r I f { l i s p T } , c a 0056240 u s e s { f n P R E T T Y P 0056260 R I N T } t o p r i n t t 0056300 r a n s l a t i o n s i n s t 0056320 e a d o f C L I S P e x p 0056340 r e s s i o n s . T h i s 0056360 i s u s e f u l f o r e x 0056400 p o r t i n g t o a L I S 0056420 P s y s t e m t h a t d o 0056440 e s n o t h a v e C L I S 0056460 P . { v a r P R E T T Y T 0056500 R A N F L G } i s ( t e m p 0056520 o r a r i l y ) r e s e t t 0056540 o { l i s p T } w h e n 0056560 { f n M A K E F I L E } i s 0056600 c a l l e d w i t h t h e 0056620 o p t i o n { l i s p N O 0056640 C L I S P } . { i n d e x N O 0056660 C L I S P ( M A K E F I L E 0056700 o p t i o n ) } { v a r P 0056720 R E T T Y T R A N F L G } i s 0056740 i n i t i a l l y { l i s p 0056760 N I L } . \r } } \r \r \r \r { F n 0057000 D e f { N a m e P P T } { 0057020 A r g s X } \r { T y p e N O 0057040 S P R E A D N L A M B D A } \r 0057060 { T e x t \r B o t h a f u n 0057100 c t i o n a n d a n e d i 0057120 t m a c r o f o r p r e t 0057140 t y p r i n t i n g t r a n s 0057160 l a t i o n s . I t p e r 0057200 f o r m s a { l i s p P P 0057220 } a f t e r f i r s t r e 0057240 s e t t i n g { v a r P R E 0057260 T T Y T R A N F L G } t o { 0057300 l i s p T } , t h e r e b y 0057320 \r c a u s i n g a n y t r a 0057340 n s l a t i o n s t o b e 0057360 p r i n t e d i n s t e a d 0057400 o f t h e c o r r e s p o n 0057420 d i n g C L I S P . \r \r { i n 0057440 d e x P P T E d i t C o m } 0057460 \r } } \r \r \r \r { D e f { T y p 0057500 e E d i t C o m } { N a m e 0057520 C L I S P : } \r { T e x t \r E 0057540 d i t m a c r o t h a t o 0057560 b t a i n s t h e t r a n s 0057600 l a t i o n o f t h e c o 0057620 r r e c t e x p r e s s i o n 0057640 , i f a n y , f r o m { 0057660 i n d e x C L I S P A R R A Y 0057700 V a r } { v a r C L I S P A 0057720 R R A Y } , a n d c a l l s 0057740 { f n E D I T E } o n i 0057760 t . \r } } \r \r \r \r { D e f { T 0060000 y p e E d i t C o m } { N a 0060020 m e C L } \r { T e x t \r E d i 0060040 t m a c r o . R e p l a c 0060060 e s c u r r e n t e x p r e 0060100 s s i o n w i t h { f n C 0060120 L I S P I F Y } e d c u r r e 0060140 n t e x p r e s s i o n . 0060160 C u r r e n t e x p r e s s i 0060200 o n c a n b e a n e l e 0060220 m e n t o r t a i l . \r } } 0060240 \r \r \r \r { D e f { T y p e E 0060260 d i t C o m } { N a m e D W 0060300 } \r { T e x t \r E d i t m a c 0060320 r o . { f n D W I M I F Y 0060340 } s c u r r e n t e x p r e 0060360 s s i o n , w h i c h c a n 0060400 b e a n e l e m e n t ( 0060420 a t o m o r l i s t ) o r 0060440 t a i l . \r } } \r \r \r B o t h 0060460 { e d i t c o m C L } a n 0060500 d { e d i t c o m D W } c 0060520 a n b e c a l l e d w h e 0060540 n t h e c u r r e n t e x 0060560 p r e s s i o n \r i s e i t h 0060600 e r a n e l e m e n t o r 0060620 a t a i l a n d w i l l 0060640 w o r k p r o p e r l y . 0060660 B o t h c o n s u l t t h 0060700 e d e c l a r a t i o n s i 0060720 n t h e f u n c t i o n b 0060740 e i n g e d i t e d , i f 0060760 a n y , a n d b o t h a r 0061000 e u n d o a b l e . \r \r \r { F 0061020 n D e f { F n N a m e L O W 0061040 E R C A S E } { F n A r g s 0061060 F L G } \r { T e x t \r I f { a 0061100 r g F L G } = { l i s p T } 0061120 , { f n L O W E R C A S E } 0061140 m a k e s t h e n e c e s 0061160 s a r y i n t e r n a l m o 0061200 d i f i c a t i o n s s o t 0061220 h a t { f n C L I S P I F Y 0061240 } w i l l u s e l o w e r 0061260 c a s e v e r s i o n s o 0061300 f { l i s p A N D } , { l 0061320 i s p O R } , { l i s p I 0061340 F } , { l i s p T H E N } , 0061360 { l i s p E L S E } , { l 0061400 i s p E L S E I F } , { i n d 0061420 e x l o w e r c a s e i n 0061440 C L I S P } a n d a l l 0061460 i . s . o p e r a t o r s . 0061500 T h i s p r o d u c e s m 0061520 o r e r e a d a b l e o u t 0061540 p u t . N o t e t h a t 0061560 t h e u s e r c a n a l w 0061600 a y s t y p e i n { i t 0061620 e i t h e r } u p p e r o r 0061640 l o w e r c a s e ( o r 0061660 a c o m b i n a t i o n ) , 0061700 r e g a r d l e s s o f t h 0061720 e a c t i o n o f { f n 0061740 L O W E R C A S E } . I f 0061760 { a r g F L G } = { l i s p 0062000 N I L } , { f n C L I S P I 0062020 F Y } w i l l u s e u p p 0062040 e r c a s e v e r s i o n s 0062060 o f { l i s p A N D } , { 0062100 l i s p O R } , e t a l . 0062120 T h e v a l u e o f { 0062140 f n L O W E R C A S E } i s 0062160 i t s p r e v i o u s " s 0062200 e t t i n g " . { f n L O 0062220 W E R C A S E } i s u n d o 0062240 a b l e . T h e i n i t i 0062260 a l s e t t i n g f o r { 0062300 f n L O W E R C A S E } i s 0062320 { l i s p T } . \r } } \r \r \r 0062340 { B e g i n N o t e } \r c u r 0062360 r e n t l y ( S a t , 2 3 0062400 J u l 8 3 1 6 : 3 0 P D T 0062420 ) C L I S P A R I T H O P L S 0062440 T = ( + - * / + - L 0062460 T G T l t g t G E Q L 0062500 E Q G E L E g e q l e q 0062520 g e l e ) - - - m j s 0062540 \r \r ( D a t e : 1 2 J U N 0062560 1 9 7 8 0 2 0 8 - P D T \r F r 0062600 o m : T E I T E L M A N \r S u 0062620 b j e c t : c l i s p d e c \r 0062640 \r t h e q u o t e d l i s t 0062660 ( + - * / + - L T 0062700 G T ) t h a t a p p e a r e 0062720 d i n c l i s p d e c i s 0062740 n o w p a r a m e t e r i z 0062760 e d t o b e t h e v a l 0063000 u e o f C L I S P A R I T H 0063020 O P L S T . t h e q u o t 0063040 e d l i s t ( I N T E G E R 0063060 F I X E D M I X E D F L O 0063100 A T I N G ) i s t h e v a 0063120 l u e o f C L I S P A R I T 0063140 H C L A S S L S T . f e e l 0063160 f r e e t o r e s e t o r 0063200 r e b i n d t h e s e . h 0063220 o w e v e r , i d o n t t 0063240 h i n k i w i l l d o c u 0063260 m e n t t h i s f e a t u r 0063300 e . \r { E n d N o t e } \r \r \r 0063320 \r } { E n d S u b S e c M i 0063340 s c e l l a n e o u s F u n c 0063360 t i o n s a n d V a r i a b 0063400 l e s } \r \r \r \r \r { B e g i n 0063420 S u b S e c C L I S P I n t 0063440 e r n a l C o n v e n t i o n 0063460 s } \r { T i t l e C L I S P 0063500 I n t e r n a l C o n v e n t 0063520 i o n s } \r { T e x t \r \r { i n 0063540 d e x C L I S P i n t e r n 0063560 a l c o n v e n t i o n s } \r 0063600 \r { T a g A d d i n g C L I S 0063620 P i n f i x } \r \r C L I S P i 0063640 s a l m o s t e n t i r e l 0063660 y t a b l e d r i v e n b 0063700 y t h e p r o p e r t y l 0063720 i s t s o f t h e c o r r 0063740 e s p o n d i n g \r i n f i x 0063760 o r p r e f i x o p e r a t 0064000 o r s . F o r e x a m p l 0064020 e , m u c h o f t h e i 0064040 n f o r m a t i o n u s e d 0064060 f o r t r a n s l a t i n g 0064100 t h e { l i s p + } i n f 0064120 i x o p e r a t o r i s s 0064140 t o r e d o n t h e p r o 0064160 p e r t y l i s t o f t h 0064200 e l i t a t o m " { l i s p 0064220 + } " . T h u s i t i 0064240 s r e l a t i v e l y e a s 0064260 y t o a d d n e w i n f 0064300 i x o r p r e f i x o p e 0064320 r a t o r s o r c h a n g e 0064340 o l d o n e s , s i m p l 0064360 y b y a d d i n g o r c 0064400 h a n g i n g s e l e c t e d 0064420 p r o p e r t y v a l u e s 0064440 . ( T h e r e { i t i s 0064460 } s o m e b u i l t i n 0064500 i n f o r m a t i o n f o r 0064520 h a n d l i n g m i n u s , 0064540 { l i s p : } , { l i s p 0064560 ' } , a n d { l i s p ~ } 0064600 , i . e . , t h e u s e r 0064620 c o u l d n o t h i m s e 0064640 l f a d d s u c h " s p e 0064660 c i a l " o p e r a t o r s , 0064700 a l t h o u g h h e c a n 0064720 d i s a b l e o r r e d e 0064740 f i n e t h e m . ) \r \r G l o 0064760 b a l d e c l a r a t i o n s 0065000 o p e r a t e b y c h a n 0065020 g i n g t h e { p r o p L 0065040 I S P F N } a n d { p r o p 0065060 C L I S P I N F I X } p r o 0065100 p e r t i e s o f t h e a 0065120 p p r o p r i a t e o p e r a 0065140 t o r s . \r \r \r { P r o p D e f 0065160 { N a m e C L I S P T Y P E 0065200 } \r { T e x t \r T h e p r o p 0065220 e r t y v a l u e o f t h 0065240 e p r o p e r t y { p r o p 0065260 C L I S P T Y P E } i s t 0065300 h e p r e c e d e n c e n u 0065320 m b e r o f t h e o p e r 0065340 a t o r : h i g h e r v a 0065360 l u e s h a v e h i g h e r 0065400 p r e c e d e n c e , i . e 0065420 . , a r e t i g h t e r . 0065440 N o t e t h a t t h e a 0065460 c t u a l v a l u e i s u 0065500 n i m p o r t a n t , o n l y 0065520 t h e v a l u e r e l a t 0065540 i v e t o o t h e r o p e 0065560 r a t o r s . F o r e x a 0065600 m p l e , { p r o p C L I S 0065620 P T Y P E } f o r { l i s p 0065640 : } , { l i s p ^ } , a 0065660 n d { l i s p * } a r e 0065700 1 4 , 6 , a n d 4 r e s 0065720 p e c t i v e l y . O p e r 0065740 a t o r s w i t h t h e s 0065760 a m e p r e c e d e n c e g 0066000 r o u p l e f t t o r i g 0066020 h t , e . g . , { l i s p 0066040 / } a l s o h a s p r e c 0066060 e d e n c e 4 , s o { l i 0066100 s p A / B * C } i s { l i 0066120 s p ( A / B ) * C } . \r \r A n 0066140 o p e r a t o r c a n h a 0066160 v e a d i f f e r e n t l 0066200 e f t a n d r i g h t p r 0066220 e c e d e n c e b y m a k i 0066240 n g t h e v a l u e o f 0066260 { p r o p C L I S P T Y P E } 0066300 b e a d o t t e d p a i 0066320 r o f t w o n u m b e r s 0066340 , e . g . , { i n d e x C 0066360 L I S P T Y P E P r o p } { p 0066400 r o p C L I S P T Y P E } o 0066420 f { l i s p _ } i s { l 0066440 i s p ( 8 . - 1 2 ) } . 0066460 I n t h i s c a s e , { 0066500 f n C A R } i s t h e l 0066520 e f t p r e c e d e n c e , 0066540 a n d { f n C D R } t h e 0066560 r i g h t , i . e . , { f 0066600 n C A R } i s u s e d w 0066620 h e n c o m p a r i n g w i 0066640 t h o p e r a t o r s o n 0066660 t h e { i t l e f t } , a 0066700 n d { f n C D R } w i t h 0066720 o p e r a t o r s o n t h 0066740 e { i t r i g h t } . F 0066760 o r e x a m p l e , { l i s 0067000 p A * B _ C + D } i s p a 0067020 r s e d a s { l i s p A * 0067040 ( B _ ( C + D ) ) } b e c a u 0067060 s e t h e l e f t p r e c 0067100 e d e n c e o f { l i s p 0067120 _ } i s 8 , w h i c h i 0067140 s h i g h e r t h a n t h 0067160 a t o f { l i s p * } , 0067200 w h i c h i s 4 . T h e 0067220 r i g h t p r e c e d e n c 0067240 e o f { l i s p _ } i s 0067260 - 1 2 , w h i c h i s l 0067300 o w e r t h a n t h a t o 0067320 f { l i s p + } , w h i c 0067340 h i s 2 . \r \r I f t h e 0067360 { i n d e x C L I S P T Y P E 0067400 P r o p } { p r o p C L I S 0067420 P T Y P E } p r o p e r t y 0067440 f o r a n y o p e r a t o r 0067460 i s r e m o v e d , t h e 0067500 c o r r e s p o n d i n g C 0067520 L I S P t r a n s f o r m a t 0067540 i o n i s d i s a b l e d , 0067560 a s w e l l a s t h e 0067600 i n v e r s e { f n C L I S 0067620 P I F Y } t r a n s f o r m a 0067640 t i o n . \r } } \r \r \r { P r o p 0067660 D e f { N a m e U N A R Y O 0067700 P } \r { T e x t \r T h e v a l 0067720 u e o f p r o p e r t y { 0067740 p r o p U N A R Y O P } m u 0067760 s t b e { l i s p T } f 0070000 o r u n a r y o p e r a t o 0070020 r s o r b r a c k e t s . 0070040 T h e o p e r a n d i s 0070060 a l w a y s o n t h e r i 0070100 g h t , i . e . , u n a r y 0070120 o p e r a t o r s o r b r 0070140 a c k e t s a r e a l w a y 0070160 s p r e f i x o p e r a t o 0070200 r s . \r } } \r \r \r { P r o p D e 0070220 f { N a m e B R O A D S C O 0070240 P E } \r { T e x t \r T h e v a 0070260 l u e o f p r o p e r t y 0070300 { p r o p B R O A D S C O P E 0070320 } i s { l i s p T } i f 0070340 t h e o p e r a t o r h a 0070360 s l o w e r p r e c e d e n 0070400 c e t h a n I n t e r l i s 0070420 p f o r m s , e . g . , { 0070440 l i s p L T } , { l i s p 0070460 E Q U A L } , { l i s p A N 0070500 D } , e t c . \r F o r e x a 0070520 m p l e , { l i s p ( F O O 0070540 X A N D Y ) } p a r s e 0070560 s a s { l i s p ( ( F O O 0070600 X ) A N D Y ) } . I f 0070620 t h e { p r o p B R O A D 0070640 S C O P E } p r o p e r t y 0070660 w e r e r e m o v e d f r o 0070700 m t h e p r o p e r t y l 0070720 i s t o f { l i s p A N D 0070740 } , { l i s p ( F O O X 0070760 A N D Y ) } w o u l d p a 0071000 r s e a s { l i s p ( F O 0071020 O ( X A N D Y ) ) } . \r } 0071040 } \r \r \r { P r o p D e f { N a 0071060 m e L I S P F N } \r { T e x t 0071100 \r T h e v a l u e o f t h 0071120 e p r o p e r t y { p r o p 0071140 L I S P F N } i s t h e 0071160 n a m e o f t h e f u n c 0071200 t i o n t o w h i c h t h 0071220 e i n f i x o p e r a t o r 0071240 t r a n s l a t e s . F o 0071260 r e x a m p l e , t h e v 0071300 a l u e o f { p r o p L I 0071320 S P F N } f o r { l i s p 0071340 ^ } i s { l i s p E X P T 0071360 } , f o r { l i s p ' } 0071400 { l i s p Q U O T E } , e t 0071420 c . I f t h e v a l u e 0071440 o f t h e p r o p e r t y 0071460 { p r o p L I S P F N } i 0071500 s { l i s p N I L } , t h 0071520 e i n f i x o p e r a t o r 0071540 i t s e l f i s a l s o 0071560 t h e f u n c t i o n , e . 0071600 g . , { l i s p A N D } , 0071620 { l i s p O R } , { l i s p 0071640 E Q U A L } . \r } } \r \r \r { P 0071660 r o p D e f { N a m e S E T 0071700 F N } \r { T e x t \r I f { l i 0071720 s p F O O } h a s a { p 0071740 r o p S E T F N } p r o p e 0071760 r t y { l i s p F I E } , 0072000 t h e n { l i s p ( F O O 0072020 - - ) _ X } t r a n s l a t e 0072040 s t o { l i s p ( F I E 0072060 - - X ) } . F o r e x a 0072100 m p l e , i f t h e u s e 0072120 r m a k e s { l i s p E L 0072140 T } b e a n i n f i x o 0072160 p e r a t o r , e . g . { l 0072200 i s p # } , b y p u t t i 0072220 n g a p p r o p r i a t e { 0072240 p r o p C L I S P T Y P E } 0072260 a n d { p r o p L I S P F N 0072300 } p r o p e r t i e s o n 0072320 t h e p r o p e r t y l i s 0072340 t o f { l i s p # } t h 0072360 e n h e c a n a l s o m 0072400 a k e { l i s p # } f o l 0072420 l o w e d b y { l i s p _ 0072440 } t r a n s l a t e t o { 0072460 l i s p S E T A } , e . g . 0072500 , { l i s p X # N _ Y } t 0072520 o { l i s p ( S E T A X 0072540 N Y ) } , b y p u t t i n 0072560 g { l i s p S E T A } o n 0072600 t h e p r o p e r t y l i 0072620 s t o f { l i s p E L T } 0072640 u n d e r t h e p r o p e 0072660 r t y { p r o p S E T F N } 0072700 . P u t t i n g t h e l 0072720 i s t { l i s p ( E L T ) } 0072740 o n t h e p r o p e r t y 0072760 l i s t o f { l i s p S 0073000 E T A } u n d e r p r o p e 0073020 r t y { p r o p S E T F N } 0073040 w i l l e n a b l e { l i 0073060 s p S E T A } f o r m s t 0073100 o { f n C L I S P I F Y } 0073120 b a c k t o { l i s p E L 0073140 T } ' s . \r } } \r \r \r { P r o p 0073160 D e f { N a m e C L I S P I 0073200 N F I X } \r { T e x t \r T h e 0073220 v a l u e o f t h i s p r 0073240 o p e r t y i s t h e C L 0073260 I S P i n f i x t o b e 0073300 u s e d i n { f n C L I S 0073320 P I F Y } i n g . T h i s 0073340 p r o p e r t y i s s t o r 0073360 e d o n t h e p r o p e r 0073400 t y l i s t o f t h e c 0073420 o r r e s p o n d i n g I n t 0073440 e r l i s p f u n c t i o n , 0073460 e . g . , t h e v a l u e 0073500 o f p r o p e r t y { p r 0073520 o p C L I S P I N F I X } f 0073540 o r { l i s p E X P T } i 0073560 s { l i s p ^ } , f o r 0073600 { l i s p Q U O T E } i s 0073620 { l i s p ' } e t c . \r } } 0073640 \r \r \r { P r o p D e f { N a m 0073660 e C L I S P W O R D } \r { T e 0073700 x t \r A p p e a r s o n t h 0073720 e p r o p e r t y l i s t 0073740 o f c l i s p o p e r a t o 0073760 r s w h i c h c a n a p p 0074000 e a r a s { f n C A R } 0074020 o f a f o r m , s u c h 0074040 a s { l i s p F E T C H } , 0074060 { l i s p R E P L A C E } , 0074100 { l i s p I F } , i t e r 0074120 a t i v e s t a t e m e n t 0074140 o p e r a t o r s , e t c . 0074160 V a l u e o f p r o p e r 0074200 t y i s o f t h e f o r 0074220 m { l i s p ( { a r g K E 0074240 Y W O R D } . { a r g N A 0074260 M E } ) } , w h e r e { a r 0074300 g N A M E } i s t h e l 0074320 o w e r c a s e v e r s i o n 0074340 o f t h e o p e r a t o r 0074360 , a n d { a r g K E Y W O 0074400 R D } i s i t s t y p e , 0074420 e . g . { l i s p F O R W 0074440 O R D } , { l i s p I F W O 0074460 R D } , { l i s p R E C O R 0074500 D W O R D } , e t c . \r \r { a 0074520 r g K E Y W O R D } c a n 0074540 a l s o b e t h e n a m e 0074560 o f a f u n c t i o n . 0074600 W h e n t h e a t o m a 0074620 p p e a r s a s { f n C A 0074640 R } o f a f o r m , t h 0074660 e f u n c t i o n i s a p 0074700 p l i e d t o t h e f o r 0074720 m a n d t h e r e s u l t 0074740 t a k e n a s t h e c o 0074760 r r e c t f o r m . I n 0075000 t h i s c a s e , t h e f 0075020 u n c t i o n s h o u l d e 0075040 i t h e r p h y s i c a l l y 0075060 c h a n g e t h e f o r m 0075100 , o r c a l l { f n C L 0075120 I S P T R A N } ( { P a g e R 0075140 e f F n C L I S P T R A N } 0075160 ) t o s t o r e t h e t 0075200 r a n s l a t i o n . \r } } \r \r 0075220 \r A s a n e x a m p l e , 0075240 t o m a k e { l i s p & } 0075260 b e a n i n f i x c h a 0075300 r a c t e r o p e r a t o r 0075320 m e a n i n g { l i s p O R 0075340 } , t h e u s e r c o u l 0075360 d d o t h e f o l l o w i 0075400 n g : \r \r { l i s p c o d e \r _ 0075420 ( P U T P R O P ' & ' C L I 0075440 S P T Y P E ( G E T P R O P 0075460 ' O R ' C L I S P T Y P E ) ) 0075500 \r _ ( P U T P R O P ' & ' L 0075520 I S P F N ' O R ) \r _ ( P U T 0075540 P R O P ' & ' B R O A D S C 0075560 O P E T ) \r _ ( P U T P R O P 0075600 ' O R ' C L I S P I N F I X 0075620 ' & ) \r _ ( S E T Q C L I S 0075640 P C H A R S ( C O N S ' & 0075660 C L I S P C H A R S ) ) \r _ ( S 0075700 E T Q C L I S P C H A R R A Y 0075720 ( M A K E B I T T A B L E C 0075740 L I S P C H A R S ) ) } \r \r \r } 0075760 { E n d S u b S e c C L I S 0076000 P I n t e r n a l C o n v e 0076020 n t i o n s } \r \r \r \r \0 \0 | 033 \0 0076040 \0 \0 005 G A C H A \0 \n \0 \0 \0 \0 \0 \0 0076060 \0 \0 \0 \0 | 033 \0 001 z 270 0076072