$ 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