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