$ od -c -N 50000 [eris]<LispCore>SOURCES>CL-ERROR!11 0000000 ( D E F I N E - F I L E - I N F 0000020 O 247 R E A D T A B L E " X C 0000040 L " 247 P A C K A G E " I N T 0000060 E R L I S P " ) \r 006 001 ( f i l e 0000100 c r e a t e d " 2 4 - O c t - 0000120 8 6 2 0 : 1 4 : 2 5 " 006 004 { 0000140 e r i s } < l i s p c o r e > s 0000160 o u r c e s > c l - e r r o r . 0000200 \ ; 1 1 006 001 3 5 3 7 1 \r \r 0000220 | c h a n g e s | 0000240 | t o : | ( f u n c t i o n 0000260 s d e f i n e - c o n d i t i 0000300 o n n o r m a l i z e - s l o 0000320 t - d e s c r i p t i o n s s 0000340 p l i t - p r o c e e d - c l a 0000360 u s e s \r 0000400 0000420 p r o c e e d - c a s e 0000440 - f r o m - c l a u s e p r o 0000460 c e s s - p r o c e e d - k e y 0000500 w o r d s c h e c k - * c a s 0000520 e - s e l e c t o r \r 0000540 0000560 c o l l e c 0000600 t - c a s e - s e l e c t o r s 0000620 c l : c t y p e c a s e c l 0000640 : e c a s e ) \r 0000660 ( 0000700 v a r s c l - e r r o r c o m 0000720 s ) \r \r | p r e v i 0000740 o u s | | d a t e : | " 2 4 0000760 - O c t - 8 6 1 9 : 1 1 : 2 7 0001000 " { e r i s } < l i s p c o r 0001020 e > s o u r c e s > c l - e r r 0001040 o r . \ ; 1 0 ) \r \r \r ; C o p 0001060 y r i g h t ( c ) 1 9 8 6 0001100 b y X e r o x C o r p o r a 0001120 t i o n . A l l r i g h t 0001140 s r e s e r v e d . \r \r ( p r 0001160 e t t y c o m p r i n t c l - 0001200 e r r o r c o m s ) \r \r ( r p a 0001220 q q 006 002 c l - e r r o r c o m 0001240 s 006 001 \r ( ( c o 0001260 m s ( * | ; ; | \r 0001300 " T e m p 0001320 o r a r y b o o t s t r a p p 0001340 i n g s t u f f . A n y t h 0001360 i n g i n h e r e g e t s 0001400 c h a n g e d o n c e C L 0001420 s t a r t s w o r k i n g . 0001440 " \r 0001460 ) \r 0001500 ( f u n c t i o n s c o 0001520 n d i t i o n - t y p e c a s e 0001540 c o n d i t i o n - b l o c k 0001560 c o n d i t i o n - r e t u r 0001600 n ) ) \r ( c o m 0001620 s ( * | ; ; | " I n t e r 0001640 n a l s t u f f . " ) \r 0001660 ( e x p o 0001700 r t ( v a r i a b l e s % c 0001720 o n d i t i o n - t y p e s - r 0001740 e a l ) ) \r 0001760 ( f u n c t i o n s d 0002000 e f a u l t - p r o c e e d - r 0002020 e p o r t ) \r 0002040 ( f u n c t i o n s 0002060 w i t h - g e n s y m s w i t 0002100 h - e r r - l o o p - v a r s 0002120 s t r i p - k e y w o r d s m 0002140 a k e - f a k e - r e p o r t - 0002160 f u n c t i o n \r 0002200 m 0002220 a k e - r e p o r t - f u n c t 0002240 i o n m a k e - e n c a p s u 0002260 l a t i o n n o r m a l i z e 0002300 - s l o t - d e s c r i p t i o 0002320 n s \r 0002340 e x t r a c t 0002360 - c o n d i t i o n - b i n d i 0002400 n g s n o r m a l i z e - c o 0002420 n d i t i o n - c l a u s e s 0002440 \r 0002460 m a s s a g e - c a 0002500 t c h - c o n d i t i o n - c l 0002520 a u s e s s p l i t - p r o c 0002540 e e d - c l a u s e s p r o c 0002560 e e d - c a s e - f r o m - c l 0002600 a u s e \r 0002620 p r o c e 0002640 s s - p r o c e e d - k e y w o 0002660 r d s c h e c k - * c a s e - 0002700 s e l e c t o r c o l l e c t 0002720 - c a s e - s e l e c t o r s 0002740 \r 0002760 n o - p r o c e e d 0003000 - t e s t % p r e f i x - s y 0003020 m b o l % s u f f i x - s y m 0003040 b o l p r o c e e d - a r g - 0003060 c o l l e c t o r ) ) \r 0003100 ( c o m s ( * | ; ; 0003120 | \r " U 0003140 s e r - v i s i b l e f o r m 0003160 s . T h e s e s h o u l d 0003200 a l l b e e x t e r n a l 0003220 s y m b o l s . A n y o t h 0003240 e r s s h o u l d b e i n 0003260 t e r n a l . " \r 0003300 ) \r 0003320 ( f u n c t 0003340 i o n s d e f i n e - c o n d 0003360 i t i o n c l : c h e c k - t 0003400 y p e c l : e t y p e c a s e 0003420 c l : c t y p e c a s e c l 0003440 : e c a s e c l : c c a s e 0003460 \r 0003500 c l : a s s e r t 0003520 h a n d l e r - b i n d c o n 0003540 d i t i o n - b i n d c o n d 0003560 i t i o n - c a s e r e a l - 0003600 c o n d i t i o n - c a s e \r 0003620 0003640 i g n o r e - e r r o 0003660 r s p r o c e e d - c a s e 0003700 r e a l - p r o c e e d - c a s 0003720 e d e f i n e - p r o c e e d 0003740 - f u n c t i o n c a t c h - 0003760 a b o r t \r 0004000 ) ) \r 0004020 ( p r o p f i l e 0004040 t y p e c l - e r r o r ) \r 0004060 ( d e c l a r e \ 0004100 : d o n t e v a l @ l o a d 0004120 d o e v a l @ c o m p i l e d 0004140 o n t c o p y c o m p i l e r 0004160 v a r s ( a d d v a r s ( n 0004200 l a m a ) \r 0004220 * 0004320 ( n l a m l ) \r 0004340 * 0004440 ( l a m a ) ) ) 0004460 ) ) \r \r \r \r 006 004 ( * | ; ; | 0004500 " T e m p o r a r y b o o t s 0004520 t r a p p i n g s t u f f . 0004540 A n y t h i n g i n h e r e 0004560 g e t s c h a n g e d o n 0004600 c e C L s t a r t s w o r 0004620 k i n g . " ) 006 001 \r \r ( d e f m 0004640 a c r o 006 002 c o n d i t i o n 0004660 - t y p e c a s e 006 001 ( o b j 0004700 e c t & r e s t c l a u s e 0004720 s ) \r ( l e t \r ( 0004740 ( v a l ( c l : g e n s y m ) 0004760 ) ) \r ( c l : i f % c 0005000 o n d i t i o n - t y p e s - r 0005020 e a l ` ( c l : t y p e c a s 0005040 e , o b j e c t , @ c l a u 0005060 s e s ) \r 0005100 ` ( l e t ( ( , v a l , o b 0005120 j e c t ) ) \r 0005140 ( c o n d \r 0005160 0005200 , @ ( c l : m a p c a r ( 0005220 f u n c t i o n ( c l : l a m 0005240 b d a \r 0005260 * 0005320 ( c l a u s e ) \r 0005340 * 0005400 ( d e s t r u c t u r 0005420 i n g - b i n d \r 0005440 * 0005500 ( s e l e c t o r 0005520 . b o d y ) \r 0005540 * 0005600 c l a u s e \r 0005620 * 0005660 ( c l : i f 0005700 ( e q s e l e c t o r t ) \r 0005720 * 0006000 c l a u s e \r 0006020 * 0006060 ` 0006100 ( ( c o n d i t i o n - t y p e 0006120 p , v a l ' , s e l e c t o 0006140 r ) \r 0006160 * 0006220 , @ b o d y ) 0006240 ) ) ) ) \r 0006260 0006300 c l a u s e s ) ) ) ) ) ) \r 0006320 \r ( d e f m a c r o 006 002 c o n 0006340 d i t i o n - b l o c k 006 001 ( 0006360 t a g & b o d y f o r m s ) 0006400 ` ( c l : c a t c h ' , t a 0006420 g , @ f o r m s ) ) \r \r ( d e 0006440 f m a c r o 006 002 c o n d i t i 0006460 o n - r e t u r n 006 001 ( t a g 0006500 & o p t i o n a l r e s u l 0006520 t ) ` ( c l : t h r o w ' , 0006540 t a g , r e s u l t ) ) \r \r \r 0006560 \r \r 006 004 ( * | ; ; | " I n t 0006600 e r n a l s t u f f . " ) 006 001 0006620 \r \r ( * F O L L O W I N G D 0006640 E F I N I T I O N S E X P O R 0006660 T E D ) \r \r \r ( c l : d e f c o 0006700 n s t a n t 006 002 % c o n d i t 0006720 i o n - t y p e s - r e a l 006 001 0006740 n i l ) \r \r \r \r ( * E N D 0006760 E X P O R T E D D E F I N I T 0007000 I O N S ) \r \r ( d e f m a c r o 0007020 006 002 d e f a u l t - p r o c e 0007040 e d - r e p o r t 006 001 ( p r o 0007060 c e e d - t y p e ) ` ( g e t 0007100 , p r o c e e d - t y p e ' 0007120 % d e f a u l t - p r o c e e d 0007140 - r e p o r t \r 0007160 * 0007220 ' d 0007240 e f a u l t - p r o c e e d - r 0007260 e p o r t e r ) ) \r \r ( d e f m 0007300 a c r o 006 002 w i t h - g e n s 0007320 y m s 006 001 ( v a r s p r e f 0007340 i x & b o d y b o d y ) \r 0007360 ` ( l e t , ( m a p c a r 0007400 v a r s ( f u n c t i o n 0007420 ( c l : l a m b d a ( v a r ) 0007440 \r 0007460 0007500 ` ( , v a r 0007520 ( g e n s y m , p r e f i x ) 0007540 ) ) ) ) , @ b o d y ) ) \r \r ( 0007560 d e f m a c r o 006 002 w i t h - 0007600 e r r - l o o p - v a r s 006 001 0007620 ( p r e f i x & b o d y b o 0007640 d y ) ` ( w i t h - g e n s y 0007660 m s ( v a l b l o c k - n a 0007700 m e a g a i n ) \r 0007720 * 0010000 , p r e f i x \r 0010020 * 0010100 , @ b o d y ) ) \r \r ( c 0010120 l : d e f u n 006 002 s t r i p - 0010140 k e y w o r d s 006 001 ( a r g s 0010160 ) ( c l : v a l u e s ( 006 002 0010200 f o r 006 001 006 002 o l d 006 001 a r 0010220 g s 006 002 o n 006 001 a r g s 006 0010240 002 b y 006 001 c d d r \r 0010260 * 0010320 006 002 w h i l e 0010340 006 001 ( c l : k e y w o r d p 0010360 ( c l : f i r s t a r g s ) ) 0010400 \r 0010420 0010440 006 0010460 002 c o l l e c t 006 001 ( l i s t 0010500 ( c l : f i r s t a r g s ) 0010520 \r 0010540 * 0010600 ( c l 0010620 : s e c o n d a r g s ) ) ) \r 0010640 * 0010700 a r g s ) ) \r \r ( 0010720 c l : d e f u n 006 002 m a k e - 0010740 f a k e - r e p o r t - f u n c 0010760 t i o n 006 001 ( d a t u m b o 0011000 u n d - v a r & o p t i o n a 0011020 l e n c a p s u l a t i o n ) 0011040 \r ( c l : e t y p e c a s 0011060 e d a t u m ( s t r i n g 0011100 ` ( l a m b d a ( d a t u m 0011120 s t r e a m ) \r 0011140 0011160 ( 006 002 d e c 0011200 l a r e 006 001 ( i g n o r e d 0011220 a t u m ) ) \r 0011240 0011260 ( c l : w r i 0011300 t e - s t r i n g , d a t u m 0011320 s t r e a m ) ) ) \r 0011340 ( l i s t ` ( l a m 0011360 b d a ( , b o u n d - v a r 0011400 * s t a n d a r d - o u t p u t 0011420 * ) \r 0011440 , ( c l : i f ( n 0011460 u l l e n c a p s u l a t i o 0011500 n ) \r 0011520 d a 0011540 t u m \r 0011560 ` 0011600 ( l e t , e n c a p s u l a t 0011620 i o n , d a t u m ) ) ) ) ) ) 0011640 \r \r ( c l : d e f u n 006 002 m a 0011660 k e - r e p o r t - f u n c t i 0011700 o n 006 001 ( d a t u m b o u n 0011720 d - v a r & o p t i o n a l 0011740 t y p e - n a m e ) \r ( c 0011760 l : e t y p e c a s e d a t u 0012000 m ( s t r i n g ` ( l a m b 0012020 d a ( d a t u m s t r e a m 0012040 ) \r 0012060 0012100 ( 006 002 d e c l a r e 006 001 0012120 ( i g n o r e d a t u m ) ) 0012140 \r 0012160 0012200 ( c l : w r i t e - s t r 0012220 i n g , d a t u m s t r e a 0012240 m ) ) ) \r ( 0012260 l i s t ` ( l a m b d a ( , 0012300 b o u n d - v a r * s t a n d 0012320 a r d - o u t p u t * ) \r 0012340 0012360 , ( c l : i f t y p e - n a m 0012400 e ` ( 006 002 w i t h 006 001 , t y 0012420 p e - n a m e , b o u n d - v 0012440 a r , d a t u m ) d a t u m 0012460 ) ) ) ) ) \r \r ( c l : d e f u n 0012500 006 002 m a k e - e n c a p s u l 0012520 a t i o n 006 001 ( c o n d i t i 0012540 o n - t y p e s l o t - n a m 0012560 e s ) \r ( m a p c a r ( 0012600 c l : r e m o v e ' - - d u m 0012620 m y - s l o t - - s l o t - n 0012640 a m e s ) \r 0012660 ( f u n c t i o n ( l a m b d 0012700 a ( s l o t ) \r 0012720 ` 0012740 ( , s l o t ( , ( % s u f f i 0012760 x - s y m b o l c o n d i t i 0013000 o n - t y p e ( c l : c o n c 0013020 a t e n a t e ' s t r i n g 0013040 " - " \r 0013060 * 0013140 ( c l : s y 0013160 m b o l - n a m e s l o t ) ) 0013200 ) \r 0013220 0013240 c o n d i t i o 0013260 n ) ) ) ) ) ) \r \r ( c l : d e f 0013300 u n 006 002 n o r m a l i z e - s 0013320 l o t - d e s c r i p t i o n s 0013340 006 001 ( s l o t s ) \r ( m 0013360 a p c a r s l o t s ( f u n 0013400 c t i o n ( c l : l a m b d a 0013420 ( s l o t ) \r 0013440 0013460 ( 006 002 i f 006 0013500 001 ( l i s t p s l o t ) \r 0013520 * 0013560 006 002 t h e n 006 001 ( 006 0013600 002 i f 006 001 ( e q u a l ( l e 0013620 n g t h s l o t ) \r 0013640 * 0013720 1 ) \r 0013740 * 0014000 006 002 t h e n 006 001 ( a p p 0014020 e n d s l o t ' ( n i l : 0014040 r e a d o n l y t ) ) \r 0014060 * 0014120 006 002 e l s e 0014140 006 001 ` ( , ( c a r s l o t ) 0014160 , ( c a d r s l o t ) : r 0014200 e a d - o n l y t \r 0014220 * 0014300 , @ ( c d d r s l o 0014320 t ) ) ) \r 0014340 0014360 006 002 e l s e 006 0014400 001 ` ( , s l o t n i l : r 0014420 e a d - o n l y t ) ) ) ) ) ) 0014440 \r \r ( c l : d e f u n 006 002 e x 0014460 t r a c t - c o n d i t i o n - 0014500 b i n d i n g s 006 001 ( c l a u 0014520 s e s ) \r ( m a p c a r 0014540 c l a u s e s ( f u n c t i o 0014560 n ( c l : l a m b d a ( c l 0014600 a u s e ) \r 0014620 0014640 ` ( c o n s 0014660 ' , ( c l : f i r s t c l a 0014700 u s e ) , ( c l : s e c o n d 0014720 c l a u s e ) ) ) ) ) ) \r \r ( 0014740 c l : d e f u n 006 002 n o r m a 0014760 l i z e - c o n d i t i o n - c 0015000 l a u s e s 006 001 ( c l a u s e 0015020 s ) \r ( m a p c o n c c 0015040 l a u s e s ( f u n c t i o n 0015060 ( c l : l a m b d a \r 0015100 0015120 ( c l a u 0015140 s e ) \r 0015160 0015200 ( l e t ( ( c o n d i t 0015220 i o n s ( c l : f i r s t c 0015240 l a u s e ) ) ) \r 0015260 0015300 ( c l 0015320 : t y p e c a s e \r 0015340 0015360 c 0015400 o n d i t i o n s \r 0015420 0015440 ( 0015460 l i s t ( c l : i f ( e q 0015500 ( c l : f i r s t c o n d i t 0015520 i o n s ) \r 0015540 * 0015600 ' q u o 0015620 t e ) \r 0015640 * 0015700 ( c l : e r r o r 0015720 \r 0015740 * 0016000 " B a d c 0016020 o n d i t i o n s p e c ~ s 0016040 . S h o u l d b e u n q u 0016060 o t e d . " \r 0016100 * 0016160 c o n d i t i o n s ) \r 0016200 * 0016240 ( 0016260 m a p c a r c o n d i t i o n 0016300 s \r 0016320 * 0016360 ( f u n c 0016400 t i o n ( c l : l a m b d a \r 0016420 * 0016520 ( c ) \r 0016540 * 0016620 ( c l : 0016640 i f ( c l : s y m b o l p c 0016660 ) \r 0016700 * 0016760 ( c o 0017000 n s c ( c d r c l a u s e 0017020 ) ) \r 0017040 * 0017120 ( c 0017140 l : e r r o r \r 0017160 * 0017220 " B a d c o n d i t i o n 0017240 s p e c ~ s . S h o u l d 0017260 b e l i s t o f u n q u 0017300 o t e d s y m b o l s . " \r 0017320 * 0017440 c o n d i t i o n s ) ) ) ) 0017460 ) ) ) \r 0017500 0017520 ( c l : s y m 0017540 b o l ( l i s t c l a u s e 0017560 ) ) \r 0017600 0017620 ( t ( c l : e 0017640 r r o r \r 0017660 0017700 " B 0017720 a d c o n d i t i o n s p e 0017740 c ~ s . S h o u l d b e 0017760 s y m b o l o r l i s t o 0020000 f s y m b o l s . " \r 0020020 * 0020060 c o n d 0020100 i t i o n s ) ) ) ) ) ) ) ) \r \r 0020120 ( c l : d e f u n 006 002 m a s s 0020140 a g e - c a t c h - c o n d i t 0020160 i o n - c l a u s e s 006 001 ( c 0020200 l a u s e s i n i t - v a l u 0020220 e ) \r ( m a p c a r c l 0020240 a u s e s ( f u n c t i o n 0020260 ( c l : l a m b d a \r 0020300 0020320 ( c l a u s e 0020340 ) \r 0020360 0020400 ( d e s t r u c t u r i n g - b 0020420 i n d \r 0020440 0020460 ( s e l e c t o r b v l 0020500 . f o r m s ) \r 0020520 0020540 c l a u s e \r 0020560 0020600 ( 0020620 c l : i f ( n u l l b v l ) 0020640 \r 0020660 0020700 ( c o n s s e l 0020720 e c t o r f o r m s ) \r 0020740 * 0021000 ( l i s t s e l e c t o 0021020 r ` ( l e t ( , ( l i s t 0021040 ( c a r b v l ) \r 0021060 * 0021140 i n i 0021160 t - v a l u e ) , @ ( c d r 0021200 b v l ) ) \r 0021220 * 0021300 , @ f o r m s ) ) ) ) ) ) ) ) 0021320 \r \r ( c l : d e f u n 006 002 s p 0021340 l i t - p r o c e e d - c l a u 0021360 s e s 006 001 ( c l a u s e s t 0021400 a g ) \r ( l e t \r 0021420 ( c a s e s b o d i e s ) \r 0021440 ( 006 002 f o r 006 001 c l a u 0021460 s e 006 002 i n 006 001 c l a u s e 0021500 s 006 002 a s 006 001 s e l e c t o 0021520 r 006 002 f r o m 006 001 0 \r 0021540 006 002 d o 006 001 ( d e s t 0021560 r u c t u r i n g - b i n d \r 0021600 ( n a m e 0021620 v a r s ) \r 0021640 c l a u s e \r 0021660 ( c l : m u l t i p l e - 0021700 v a l u e - b i n d \r 0021720 ( t e s t r e p 0021740 o r t t a i l ) \r 0021760 ( p r o c e s s - p 0022000 r o c e e d - k e y w o r d s 0022020 n a m e ( c d d r c l a u s 0022040 e ) ) \r 0022060 ( 006 002 i f 006 001 ( n u l l n a 0022100 m e ) \r 0022120 006 002 t h e n 006 001 ( c l 0022140 : u n l e s s t e s t ( c l 0022160 : s e t f t e s t ' t r u e 0022200 ) ) \r 0022220 ( c l : u n l e 0022240 s s r e p o r t ( c l : e r 0022260 r o r \r 0022300 * 0022340 " U n n a m e d p r o c 0022360 e e d c a s e s m u s t h 0022400 a v e a r e p o r t m e t 0022420 h o d : ~ S " \r 0022440 * 0022500 c l a u s e ) ) 0022520 \r 006 0022540 002 e l s e 006 001 ( c l : u n l e 0022560 s s t e s t ( 006 002 i f 006 001 0022600 ( n o t ( g e t n a m e ' 0022620 % d e f a u l t - p r o c e e d 0022640 - t e s t ) ) \r 0022660 0022700 006 0022720 002 t h e n 006 001 ( c l : w a r n 0022740 \r 0022760 0023000 " N o 0023020 t e s t s p e c i f i e d 0023040 f o r p r o c e e d t y p e 0023060 ~ A : m a y b e u n d e 0023100 f i n e d . " \r 0023120 * 0023160 n a m e 0023200 ) ) ) \r 0023220 ( c l : u n l e s 0023240 s r e p o r t ( c l : s e t 0023260 f r e p o r t ` ( c l : l a 0023300 m b d a ( p c s t r e a m ) 0023320 \r 0023340 * 0023400 ( c 0023420 l : f u n c a l l ( d e f a u 0023440 l t - p r o c e e d - r e p o r 0023460 t \r 0023500 * 0023560 ' , n a 0023600 m e ) \r 0023620 * 0023700 p c s t r e a 0023720 m ) ) ) ) ) \r 0023740 ( c l : p u s h ` ( m a 0023760 k e - p r o c e e d - c a s e 0024000 : n a m e ' , n a m e : t a 0024020 g , t a g : s e l e c t o r 0024040 , s e l e c t o r : t e s t 0024060 \r 0024100 , ( 0024120 a n d t e s t ` ( f u n c t 0024140 i o n , t e s t ) ) : r e p 0024160 o r t ( f u n c t i o n , r 0024200 e p o r t ) ) c a s e s ) \r 0024220 ( c l : p 0024240 u s h ` ( , s e l e c t o r 0024260 ( f u n c t i o n ( c l : l a 0024300 m b d a , v a r s , @ t a i 0024320 l ) ) ) b o d i e s ) ) ) ) \r 0024340 ( c l : v a l u e s ( 0024360 r e v e r s e c a s e s ) \r 0024400 ( r e v e r 0024420 s e b o d i e s ) ) ) ) \r \r ( 0024440 c l : d e f u n 006 002 p r o c e 0024460 e d - c a s e - f r o m - c l a 0024500 u s e 006 001 ( c l a u s e t a 0024520 g d u m m y ) \r ( d e s 0024540 t r u c t u r i n g - b i n d \r 0024560 ( n a m e v a r s . 0024600 t a i l ) \r c l a u s 0024620 e \r ( c l : m u l t i p 0024640 l e - v a l u e - b i n d \r 0024660 ( t e s t r e p o r t 0024700 b o d y ) \r ( p r o c 0024720 e s s - p r o c e e d - k e y w 0024740 o r d s n a m e t a i l ) \r 0024760 ( 006 002 i f 006 001 ( n u 0025000 l l n a m e ) \r 0025020 006 002 t h e n 006 001 ( c l : u 0025040 n l e s s t e s t ( c l : s 0025060 e t f t e s t ' t r u e ) ) 0025100 \r ( 0025120 c l : u n l e s s r e p o r t 0025140 ( c l : e r r o r " U n n a 0025160 m e d p r o c e e d c a s e 0025200 s m u s t h a v e a r e 0025220 p o r t m e t h o d : ~ S " 0025240 \r 0025260 0025300 c l a u s e ) 0025320 ) \r 006 002 e l s e 006 0025340 001 ( c l : u n l e s s t e s 0025360 t ( 006 002 i f 006 001 ( n o t ( 0025400 g e t n a m e ' % d e f a u 0025420 l t - p r o c e e d - t e s t ) 0025440 ) \r 0025460 0025500 006 002 t h e n 006 001 ( c l : w 0025520 a r n \r 0025540 * 0025600 " N o t e s t s p e c i f i 0025620 e d f o r p r o c e e d t 0025640 y p e ~ A : m a y b e u 0025660 n d e f i n e d . " \r 0025700 * 0025740 n a m e ) ) ) \r 0025760 ( c l : 0026000 u n l e s s r e p o r t ( c 0026020 l : s e t f r e p o r t ` ( 0026040 c l : l a m b d a ( p c s t 0026060 r e a m ) \r 0026100 * 0026140 ( c l : 0026160 f u n c a l l ( d e f a u l t 0026200 - p r o c e e d - r e p o r t \r 0026220 * 0026320 ' , n a m e ) \r 0026340 * 0026420 p c s t r e a 0026440 m ) ) ) ) ) \r ` ( m a 0026460 k e - r e a l - p r o c e e d - 0026500 c a s e : n a m e ' , n a m 0026520 e : t a g , t a g : c o n 0026540 t i n u a t i o n \r 0026560 ( f u n c t i o n 0026600 ( c l : l a m b d a ( & o p 0026620 t i o n a l , @ ( o r v a r 0026640 s ( l i s t d u m m y ) ) ) 0026660 \r 0026700 , 0026720 @ b o d y ) ) \r 0026740 : t e s t \r 0026760 , ( a n d t e 0027000 s t ` ( f u n c t i o n , t 0027020 e s t ) ) : r e p o r t ( f 0027040 u n c t i o n , r e p o r t ) 0027060 ) ) ) ) \r \r ( c l : d e f u n 0027100 006 002 p r o c e s s - p r o c e e 0027120 d - k e y w o r d s 006 001 ( n a 0027140 m e a r g ) \r ( l e t 0027160 ( t e s t r e p o r t ) \r 0027200 ( c l : m u l t i p 0027220 l e - v a l u e - b i n d \r 0027240 ( k e y s t a i 0027260 l ) \r ( s t r 0027300 i p - k e y w o r d s a r g ) 0027320 \r ( 006 002 | f o 0027340 r | 006 001 p a i r 006 002 | i n | 0027360 006 001 k e y s \r 0027400 006 002 | d o | 006 001 ( d e 0027420 s t r u c t u r i n g - b i n d 0027440 ( k e y v a l u e ) \r 0027460 0027500 p a i r \r 0027520 0027540 ( c a s e k e y ( : t e 0027560 s t ( c l : i f t e s t ( 0027600 c l : e r r o r \r 0027620 * 0027660 " D u p l 0027700 i c a t e t e s t f o r m 0027720 s p e c i f i e d f o r p r 0027740 o c e e d t y p e ~ S . " 0027760 \r 0030000 * 0030040 n a m 0030060 e ) ) \r 0030100 0030120 ( c l 0030140 : s e t f t e s t v a l u e 0030160 ) ) \r 0030200 0030220 ( : c o n d i t i o n ( c l 0030240 : i f t e s t ( c l : e r r 0030260 o r \r 0030300 * 0030340 " D u p l i c a t e 0030360 t e s t f o r m s p e c i f 0030400 i e d f o r p r o c e e d 0030420 t y p e ~ S . " \r 0030440 * 0030520 n a m e ) ) \r 0030540 * 0030600 ( c l : s e t f t e s 0030620 t ` ( c l : l a m b d a ( c 0030640 ) \r 0030660 * 0030720 ( c o 0030740 n d i t i o n - t y p e p c 0030760 ' , v a l u e ) ) ) ) \r 0031000 0031020 ( : r e p o 0031040 r t - f u n c t i o n ( c l : 0031060 i f r e p o r t ( c l : e r 0031100 r o r \r 0031120 * 0031160 " D u p l i c a t e r 0031200 e p o r t f o r m s p e c i 0031220 f i e d f o r p r o c e e d 0031240 t y p e ~ S . " \r 0031260 * 0031360 n a m e ) ) \r 0031400 0031420 ( c l 0031440 : s e t f r e p o r t v a l 0031460 u e ) ) \r 0031500 0031520 ( : r e p o r t ( c l : 0031540 i f r e p o r t ( c l : e r 0031560 r o r \r 0031600 * 0031640 " D u p l i c a t e r 0031660 e p o r t f o r m s p e c i 0031700 f i e d f o r p r o c e e d 0031720 t y p e ~ S . " \r 0031740 * 0032020 n a m e ) ) \r 0032040 * 0032100 ( c l : s e t f r e p 0032120 o r t ( m a k e - r e p o r t 0032140 - f u n c t i o n v a l u e 0032160 ' p r o c e e d - c a s e ) ) ) 0032200 \r 0032220 ( 0032240 c l : o t h e r w i s e ( c l 0032260 : c e r r o r " I g n o r e 0032300 k e y / v a l u e p a i r " 0032320 \r 0032340 * 0032400 " I l l e g a l k e y 0032420 w o r d ~ S i n p r o c e 0032440 e d c a s e ~ S . " k e y 0032460 n a m e ) \r 0032500 0032520 ) ) ) ) 0032540 \r ( c l : v a 0032560 l u e s t e s t r e p o r t 0032600 t a i l ) ) ) ) \r \r ( c l : d 0032620 e f u n 006 002 c h e c k - * c a 0032640 s e - s e l e c t o r 006 001 ( s 0032660 e l e c t o r n a m e ) ( c 0032700 l : i f ( o r ( e q s e l 0032720 e c t o r ' t ) \r 0032740 * 0033020 ( e q s e l e c t o r 0033040 ' c l : o t h e r w i s e ) ) 0033060 \r 0033100 * 0033140 ( c l : e r r o r 0033160 " ~ A n o t a l l o w e d 0033200 i n t h e ~ A f o r m . 0033220 " \r 0033240 * 0033320 s e l e c t o r n a m e ) \r 0033340 * 0033420 s e l e c t o r ) ) \r 0033440 \r ( c l : d e f u n 006 002 c o l 0033460 l e c t - c a s e - s e l e c t 0033500 o r s 006 001 ( c l a u s e s n 0033520 a m e ) \r ( m a p c o n c 0033540 c l a u s e s ( f u n c t i 0033560 o n ( c l : l a m b d a ( c 0033600 l a u s e ) \r 0033620 0033640 ( 006 002 i 0033660 f 006 001 ( a n d ( c l : c o n 0033700 s p ( c a r c l a u s e ) ) 0033720 \r 0033740 0033760 ( 0034000 f m e m b n a m e ' ( c l : 0034020 e c a s e c l : c c a s e ) ) 0034040 ) \r 0034060 0034100 006 002 t h e 0034120 n 006 001 ( c l : c o p y - l i s 0034140 t ( c a r c l a u s e ) ) \r 0034160 * 0034220 006 002 e l s e 006 001 0034240 ( l i s t ( c h e c k - * c a 0034260 s e - s e l e c t o r ( c a r 0034300 c l a u s e ) \r 0034320 * 0034400 n a m e ) ) ) ) ) ) ) \r \r ( 0034420 c l : d e f u n 006 002 n o - p r 0034440 o c e e d - t e s t 006 001 ( n a 0034460 m e & a u x o n c e ) \r 0034500 ( p r o c e e d - c a s e ( 0034520 h a n d l e r - b i n d ( ( n 0034540 o - p r o c e e d - t e s t ( 0034560 f u n c t i o n ( c l : l a m 0034600 b d a \r 0034620 * 0034700 ( c ) \r 0034720 * 0035000 ( c l : w h e n ( e q ( n o 0035020 - p r o c e e d - t e s t - n a 0035040 m e c ) \r 0035060 * 0035140 n 0035160 a m e ) \r 0035200 * 0035260 ( c l : i f o 0035300 n c e ( c l : t h r o w ' \r 0035320 * 0035440 s k i p - p r o c e e d 0035460 - c a s e \r 0035500 * 0035600 n i l 0035620 ) \r 0035640 * 0035720 ( c l : 0035740 s e t f o n c e t ) ) ) ) ) 0035760 ) ) \r 0036000 ( c l : e 0036020 r r o r ' n o - p r o c e e d 0036040 - t e s t : n a m e n a m e 0036060 ) ) \r ( n i 0036100 l n i l : r e p o r t " U 0036120 s e F A L S E f o r t h e 0036140 t e s t " : c o n d i t i o 0036160 n n o - p r o c e e d - t e s 0036200 t ( f u n c t i o n f a l s 0036220 e ) ) \r ( p 0036240 r o c e e d n i l : r e p o 0036260 r t " M a k e T R U E t h 0036300 e d e f a u l t t e s t " 0036320 : c o n d i t i o n n o - p r 0036340 o c e e d - t e s t \r 0036360 ( c l : 0036400 s e t f ( d e f a u l t - p r 0036420 o c e e d - t e s t n a m e ) 0036440 \r 0036460 ( f u n c t i 0036500 o n t r u e ) ) ) ) ) \r \r ( c 0036520 l : d e f u n 006 002 % p r e f i 0036540 x - s y m b o l 006 001 ( p r e f 0036560 i x c l : s y m b o l ) ( c 0036600 l : i n t e r n ( c l : c o n 0036620 c a t e n a t e ' s t r i n g 0036640 p r e f i x ( c l : s y m b 0036660 o l - n a m e \r 0036700 * 0037000 c 0037020 l : s y m b o l ) ) \r 0037040 * 0037100 ( c 0037120 l : s y m b o l - p a c k a g e 0037140 c l : s y m b o l ) ) ) \r \r ( 0037160 c l : d e f u n 006 002 % s u f f 0037200 i x - s y m b o l 006 001 ( c l : 0037220 s y m b o l s u f f i x ) ( 0037240 c l : i n t e r n ( c l : c o 0037260 n c a t e n a t e ' s t r i n 0037300 g ( c l : s y m b o l - n a m 0037320 e \r 0037340 * 0037440 c l : s y m b 0037460 o l ) \r 0037500 * 0037560 s u f f i x ) \r 0037600 * 0037640 ( c l 0037660 : s y m b o l - p a c k a g e 0037700 c l : s y m b o l ) ) ) \r \r ( d 0037720 e f m a c r o 006 002 p r o c e e 0037740 d - a r g - c o l l e c t o r 006 0037760 001 ( n a m e ) " F u n c t i 0040000 o n t h a t c o l l e c t s 0040020 u s e r - s p e c i f i e d 0040040 o p t i o n a l a r g s ( e 0040060 x c l u d i n g t h e c o n 0040100 d i t i o n ) f o r a n a 0040120 m e d p r o c e e d c a s e 0040140 . " \r ` ( g e t , n a m 0040160 e ' % p r o c e e d - a r g - 0040200 c o l l e c t o r ) ) \r \r \r \r \r 0040220 006 004 ( * | ; ; | " U s e r - 0040240 v i s i b l e f o r m s . T 0040260 h e s e s h o u l d a l l 0040300 b e e x t e r n a l s y m b 0040320 o l s . A n y o t h e r s 0040340 s h o u l d b e i n t e r n 0040360 a l . " ) 006 001 \r \r ( d e f d e f 0040400 i n e r 006 002 d e f i n e - c o 0040420 n d i t i o n 006 001 \r s t r 0040440 u c t u r e s \r ( n a m e 0040460 p a r e n t - t y p e & r e 0040500 s t a r g s ) \r " D e f 0040520 i n e s a n e w c o n d i 0040540 t i o n t y p e " \r ( c 0040560 l : f l e t \r ( ( e x t 0040600 r a c t - s l o t - n a m e ( 0040620 s l o t ) \r 0040640 ( 006 002 i f 006 001 ( c l : c o 0040660 n s p s l o t ) \r 0040700 006 002 t h e n 0040720 006 001 ( c a r s l o t ) \r 0040740 006 002 e l 0040760 s e 006 001 s l o t ) ) ) \r 0041000 ( l e t \r ( ( c l a 0041020 s s - o p t i o n s ` ( , @ ( 0041040 c l : i f % c o n d i t i o n 0041060 - t y p e s - r e a l ' ( ( : 0041100 p r i n t - f u n c t i o n % 0041120 p r i n t - c o n d i t i o n ) 0041140 ) \r 0041160 0041200 ' ( ( : t y p e l i s t ) 0041220 \r 0041240 0041260 : n a m e d ) ) ( : c o 0041300 n s t r u c t o r , ( % p r e 0041320 f i x - s y m b o l " % M A K 0041340 E - " n a m e ) ) \r 0041360 0041400 ( : c o p i e r 0041420 n i l ) \r 0041440 0041460 ( : p r e d i c a t e n 0041500 i l ) ) ) \r r e p o 0041520 r t e r h a n d l e r e n c 0041540 a p s u l a t i o n ) \r 0041560 ( c l : m u l t i p l e - v a 0041600 l u e - b i n d \r ( 0041620 k e y s s l o t - d e s c r i 0041640 p t i o n s ) \r ( s 0041660 t r i p - k e y w o r d s a r 0041700 g s ) \r ( c l : s e 0041720 t f s l o t - d e s c r i p t 0041740 i o n s ( n o r m a l i z e - 0041760 s l o t - d e s c r i p t i o n 0042000 s s l o t - d e s c r i p t i 0042020 o n s ) ) \r ( a n d 0042040 ( n e q p a r e n t - t y p 0042060 e n a m e ) \r 0042100 ( l e t * ( ( a l l - s 0042120 u p e r - s l o t s ( s l o t 0042140 - l i s t p a r e n t - t y p 0042160 e ) ) \r 0042200 ( r e d e f i n e d 0042220 - s l o t s ( 006 002 f o r 006 001 0042240 s l o t 006 002 i n 006 001 s l o t 0042260 - d e s c r i p t i o n s 006 002 0042300 w h e n 006 001 ( c l : m e m b e 0042320 r ( c a r s l o t ) \r 0042340 * 0042440 a l l - s 0042460 u p e r - s l o t s ) \r 0042500 * 0042540 006 002 c o l l e c t 006 001 s l 0042560 o t ) ) ) \r 0042600 ( c l : p u s h 0042620 ( l i s t * : i n c l u d e 0042640 p a r e n t - t y p e r e d e 0042660 f i n e d - s l o t s ) \r 0042700 0042720 c l a s s - o p t i o 0042740 n s ) \r 0042760 ( c l : s e t f s l 0043000 o t - d e s c r i p t i o n s 0043020 ( 006 002 f o r 006 001 s l o t 006 002 0043040 i n 006 001 s l o t - d e s c r i 0043060 p t i o n s \r 0043100 * 0043140 006 002 u n l e s s 006 001 0043160 ( c l : m e m b e r s l o t 0043200 r e d e f i n e d - s l o t s 0043220 ) 006 002 c o l l e c t 006 001 s l 0043240 o t ) ) \r 0043260 ) ) \r ( 0043300 c l : u n l e s s ( a n d n 0043320 i l % c o n d i t i o n - t y 0043340 p e s - r e a l ) \r 0043360 ( c l : s e t f 0043400 e n c a p s u l a t i o n ( m 0043420 a k e - e n c a p s u l a t i o 0043440 n n a m e ( a p p e n d ( 0043460 m a p c a r ( s l o t - l i s 0043500 t p a r e n t - t y p e ) \r 0043520 * 0043620 ( f u n c 0043640 t i o n \r 0043660 * 0043760 e x t r a c t - s l o t - 0044000 n a m e ) ) \r 0044020 * 0044100 ( m a p c 0044120 a r s l o t - d e s c r i p t 0044140 i o n s \r 0044160 * 0044260 ( f u n c t i o n \r 0044300 * 0044400 e x t r a c t - s 0044420 l o t - n a m e ) ) ) ) ) ) \r 0044440 ( 006 002 f o r 006 001 p a 0044460 i r 006 002 i n 006 001 k e y s \r 0044500 006 002 d o 006 001 \r 0044520 ( d e s t r u c 0044540 t u r i n g - b i n d \r 0044560 ( k e y v a l u e 0044600 ) \r p a i r 0044620 \r ( c a s e 0044640 k e y ( : c o n c - n a m e 0044660 ( c l : p u s h p a i r c 0044700 l a s s - o p t i o n s ) ) \r 0044720 ( 0044740 : r e p o r t - f u n c t i o n 0044760 ( 006 002 i f 006 001 r e p o r t e 0045000 r \r 0045020 0045040 006 002 t h e n 006 001 0045060 ( c l : e r r o r " R e p o 0045100 r t f u n c t i o n a l r e 0045120 a d y s p e c i f i e d f o 0045140 r ~ S . " n a m e \r 0045160 * 0045220 ) \r 0045240 * 0045300 006 002 e l s e 006 001 ( c l 0045320 : s e t f r e p o r t e r v 0045340 a l u e ) ) ) \r 0045360 ( : r e p o r t 0045400 ( 006 002 i f 006 001 r e p o r t e 0045420 r \r 0045440 006 0045460 002 t h e n 006 001 ( c l : e r r o 0045500 r " R e p o r t f u n c t i 0045520 o n a l r e a d y s p e c i 0045540 f i e d f o r ~ S . " n a 0045560 m e ) \r 0045600 006 0045620 002 e l s e 006 001 ( c l : s e t f 0045640 r e p o r t e r ( c l : i f 0045660 ( a n d n i l % c o n d i 0045700 t i o n - t y p e s - r e a l ) 0045720 \r 0045740 * 0046000 ( m a k e - 0046020 r e p o r t - f u n c t i o n 0046040 v a l u e ' c o n d i t i o n 0046060 n a m e ) \r 0046100 * 0046160 ( m a k e - f a k e - r e p o r 0046200 t - f u n c t i o n v a l u e 0046220 \r 0046240 * 0046320 ' c o n d i t i o n e n c a 0046340 p s u l a t i o n ) ) ) ) ) \r 0046360 ( 0046400 : h a n d l e r - f u n c t i o 0046420 n ( 006 002 i f 006 001 h a n d l e 0046440 r \r 0046460 0046500 006 002 t h e n 006 0046520 001 ( c l : e r r o r " H a n 0046540 d l e r a l r e a d y s p e 0046560 c i f i e d f o r ~ S . " 0046600 n a m e ) \r 0046620 0046640 006 002 e l s 0046660 e 006 001 ( c l : s e t f h a n 0046700 d l e r v a l u e ) ) ) \r 0046720 ( : 0046740 h a n d l e ( 006 002 i f 006 001 h 0046760 a n d l e r \r 0047000 0047020 006 002 t h e n 006 001 ( c l 0047040 : e r r o r " H a n d l e r 0047060 a l r e a d y s p e c i f i e 0047100 d f o r ~ S . " n a m e ) 0047120 \r 0047140 006 002 e l 0047160 s e 006 001 ( c l : s e t f h a 0047200 n d l e r ` ( l a m b d a ( 0047220 c o n d i t i o n ) \r 0047240 * 0047300 , 0047320 ( c l : i f ( n u l l e n c 0047340 a p s u l a t i o n ) \r 0047360 * 0047440 v a l u e \r 0047460 * 0047540 ` ( l e t 0047560 , e n c a p s u l a t i o n , 0047600 v a l u e ) ) ) ) ) ) \r 0047620 ( c l : 0047640 o t h e r w i s e ( c l : c e 0047660 r r o r " S k i p k e y - v 0047700 a l u e p a i r " " I l l e 0047720 g a l k e y w o r d ~ S i 0047740 n ~ S . " k e y \r 0047760 * 0050020 ' d e f i n e - c o n d i t i o 0050040 n ) ) ) ) ) \r ` ( p 0050060 r o g n ( c l : d e f s t r u 0050100 c t ( 006 002 ( \ \ \ , n a m e 0050120 ) 006 001 , @ c l a s s - o p t i 0050140 o n s ) , @ s l o t - d e s c 0050160 r i p t i o n s ) \r \r 0050200 , @ ( c l : 0050220 i f ( n e q n a m e p a r 0050240 e n t - t y p e ) \r 0050260 0050300 ` ( ( f i x - i n h e r i t a 0050320 n c e - l i n k s ' , n a m e 0050340 ' , p a r e n t - t y p e ) ) 0050360 ) \r 0050400 , @ ( c l : i f ( c l : c o n 0050420 s p h a n d l e r ) \r 0050440 0050460 ( l e t ( ( h a n d l e 0050500 r - n a m e ( % s u f f i x - 0050520 s y m b o l n a m e " d e 0050540 f a u l t h a n d l e r " ) ) 0050560 ) \r 0050600 ( p 0050620 r o g 1 ` ( ( c l : s e t f 0050640 ( c l : s y m b o l - f u n c t 0050660 i o n ' , h a n d l e r - n a 0050700 m e ) \r 0050720 * 0050760 ( f u n c t i o n , h a n d l 0051000 e r ) ) ) ( s e t q h a n d 0051020 l e r h a n d l e r - n a m e 0051040 ) ) ) ) \r 0051060 ( c l : s e t f ( c o n 0051100 d i t i o n - h a n d l e r ' 0051120 , n a m e ) \r 0051140 , ( a n 0051160 d h a n d l e r ` ( f u n c 0051200 t i o n , h a n d l e r ) ) ) 0051220 \r , 0051240 @ ( c l : i f ( c l : c o n s 0051260 p r e p o r t e r ) \r 0051300 0051320 ( l e t ( ( r e p o r t 0051340 e r - n a m e ( % s u f f i x 0051360 - s y m b o l n a m e " r 0051400 e p o r t m e t h o d " ) ) ) 0051420 \r 0051440 ( p r 0051460 o g 1 ` ( ( c l : s e t f ( 0051500 c l : s y m b o l - f u n c t i 0051520 o n ' , r e p o r t e r - n a 0051540 m e ) \r 0051560 * 0051620 ( f u n c t i o n , r e p o r 0051640 t e r ) ) ) ( s e t q r e p 0051660 o r t e r r e p o r t e r - n 0051700 a m e ) ) ) ) \r 0051720 ( c l : s e t f ( 0051740 c o n d i t i o n - r e p o r t 0051760 e r ' , n a m e ) \r 0052000 0052020 , ( a n d r e p o r t e r ` 0052040 ( f u n c t i o n , r e p o r 0052060 t e r ) ) ) \r 0052100 ' , n a m e ) ) ) ) ) 0052120 \r \r ( d e f m a c r o 006 002 c l 0052140 : c h e c k - t y p e 006 001 ( p 0052160 l a c e t y p e s p e c & o 0052200 p t i o n a l s t r i n g ) \r 0052220 ( w i t h - e r r - l o o 0052240 p - v a r s " C H E C K - T Y 0052260 P E " ` ( c l : b l o c k , 0052300 b l o c k - n a m e \r 0052320 * 0052360 ( c l : t a g b o 0052400 d y , a g a i n \r 0052420 * 0052460 ( l e 0052500 t ( ( , v a l , p l a c e ) 0052520 ) \r 0052540 * 0052600 ( c l : w h 0052620 e n ( t y p e p , v a l ' 0052640 , t y p e s p e c ) \r 0052660 * 0052740 ( c l : r e 0052760 t u r n - f r o m , b l o c k 0053000 - n a m e ) ) \r 0053020 * 0053100 ( c l : s e t f , p l a c e 0053120 ( c h e c k - t y p e - f a i l 0053140 \r 0053160 * 0053240 t \r 0053260 * 0053360 ' , p l a c e \r 0053400 * 0053500 , v a l \r 0053520 * 0053620 ' , t y p e s p e c \r 0053640 * 0053740 , s t r i n g ) 0053760 ) \r 0054000 * 0054040 ( g o , a 0054060 g a i n ) ) ) ) ) ) \r \r ( d e f 0054100 m a c r o 006 002 c l : e t y p e 0054120 c a s e 006 001 ( k e y f o r m 0054140 & b o d y c l a u s e s ) \r 0054160 ( w i t h - g e n s y m s 0054200 ( v a l u e ) \r 0054220 " E T Y P E C A S E " \r 0054240 ( l e t ( ( c 0054260 a s e - s e l e c t o r s ( c 0054300 o n s ' o r ( c o l l e c t 0054320 - c a s e - s e l e c t o r s 0054340 c l a u s e s ' c l : e t y p 0054360 e c a s e ) ) ) ) \r 0054400 ` ( l e t ( 0054420 ( , v a l u e , k e y f o r m 0054440 ) ) \r 0054460 ( c l : t y p e 0054500 c a s e , v a l u e , @ c l 0054520 a u s e s ( t ( c h e c k - 0054540 t y p e - f a i l n i l ' , 0054560 k e y f o r m , v a l u e \r 0054600 * 0054660 ' , c a 0054700 s e - s e l e c t o r s n i l 0054720 ) ) ) ) ) ) ) \r \r ( d e f m a c 0054740 r o 006 002 c l : c t y p e c a s 0054760 e 006 001 ( k e y p l a c e & b 0055000 o d y c l a u s e s ) \r 0055020 ( l e t ( ( c a s e - s e l e 0055040 c t o r s ( c o n s ' o r 0055060 ( c o l l e c t - c a s e - s e 0055100 l e c t o r s c l a u s e s 0055120 ' c l : c t y p e c a s e ) ) ) 0055140 ) \r ( w i t h - 0055160 e r r - l o o p - v a r s \r 0055200 " C T Y P E C A S 0055220 E " \r ` ( c l 0055240 : b l o c k , b l o c k - n a 0055260 m e ( c l : t a g b o d y \r 0055300 * 0055340 , a g a i n \r 0055360 0055400 ( l e t ( ( , 0055420 v a l , k e y p l a c e ) ) \r 0055440 * 0055500 ( c l : r e t u r n 0055520 - f r o m , b l o c k - n a m 0055540 e \r 0055560 0055600 ( 0055620 c l : t y p e c a s e , v a l 0055640 , @ c l a u s e s \r 0055660 * 0055720 ( 0055740 t ( c l : s e t f , k e y p 0055760 l a c e ( c h e c k - t y p e 0056000 - f a i l \r 0056020 * 0056120 t \r 0056140 * 0056220 ' , 0056240 k e y p l a c e \r 0056260 * 0056360 , v a l \r 0056400 * 0056500 ' , c a s e - s e l e c 0056520 t o r s n i l ) ) \r 0056540 * 0056620 ( g o , a g a i n ) ) ) ) 0056640 ) ) ) ) ) ) \r \r ( d e f m a c r 0056660 o 006 002 c l : e c a s e 006 001 ( 0056700 k e y f o r m & r e s t c l 0056720 a u s e s ) \r ( w i t h - 0056740 g e n s y m s ( v a l u e ) \r 0056760 " E C A S E 0057000 " \r ( l e t 0057020 ( ( c a s e - s e l e c t o r 0057040 s ( c o l l e c t - c a s e - 0057060 s e l e c t o r s c l a u s e 0057100 s ' c l : e c a s e ) ) ) \r 0057120 ( c 0057140 l : i f c a s e - s e l e c t 0057160 o r s ` ( l e t ( ( , v a l 0057200 u e , k e y f o r m ) ) \r 0057220 * 0057260 ( c a s e , 0057300 v a l u e , @ c l a u s e s 0057320 ( t ( e c a s e - f a i l n 0057340 i l \r 0057360 * 0057440 ' 0057460 , k e y f o r m \r 0057500 * 0057600 , v a l u e \r 0057620 * 0057720 ' , c a s e - s 0057740 e l e c t o r s ) ) ) ) \r 0057760 0060000 ( c l : e r r o r " E m 0060020 p t y c a s e s t a t e m e 0060040 n t . " ) ) ) ) ) \r \r ( d e f m 0060060 a c r o 006 002 c l : c c a s e 006 0060100 001 ( k e y f o r m & b o d y 0060120 c l a u s e s ) \r ( l e 0060140 t ( ( c a s e - s e l e c t o 0060160 r s ( c o l l e c t - c a s e 0060200 - s e l e c t o r s c l a u s 0060220 e s ' c l : c c a s e ) ) ) \r 0060240 ( c l : u n l e 0060260 s s c a s e - s e l e c t o r 0060300 s ( c l : e r r o r " E m p 0060320 t y C C A S E . " ) ) \r 0060340 ( w i t h - e r r - l 0060360 o o p - v a r s \r 0060400 " C C A S E " \r 0060420 ` ( c l : b l o c k , b 0060440 l o c k - n a m e ( c l : t a 0060460 g b o d y \r 0060500 0060520 , a g a i n \r 0060540 0060560 ( 0060600 l e t ( ( , v a l , k e y f 0060620 o r m ) ) \r 0060640 0060660 ( c l : 0060700 r e t u r n - f r o m , b l o 0060720 c k - n a m e \r 0060740 * 0061000 ( c a s e , v a l 0061020 , @ c l a u s e s \r 0061040 * 0061100 ( t 0061120 ( c l : s e t f , k e y f o r 0061140 m ( e c a s e - f a i l \r 0061160 * 0061260 t \r 0061300 * 0061400 ' , k e y f o r m \r 0061420 * 0061520 , v a l \r 0061540 * 0061640 ' , c a s e - s e l e c t 0061660 o r s ) ) \r 0061700 * 0061740 ( g o 0061760 , a g a i n ) ) ) ) ) ) ) ) ) ) 0062000 \r \r ( d e f m a c r o 006 002 c l 0062020 : a s s e r t 006 001 ( t e s t - 0062040 f o r m & o p t i o n a l p 0062060 l a c e s s t r i n g & r e 0062100 s t a r g s ) \r ( c l : 0062120 u n l e s s ( c l : l i s t p 0062140 p l a c e s ) \r 0062160 ( c l : e r r o r " ~ S 0062200 s h o u l d b e a l i s 0062220 t o f p l a c e s . " p l 0062240 a c e s ) ) \r ( w i t h - 0062260 e r r - l o o p - v a r s " A 0062300 S S E R T " ` ( c l : b l o c 0062320 k , b l o c k - n a m e ( c 0062340 l : t a g b o d y , a g a i n 0062360 ( c l : w h e n \r 0062400 * 0062500 , t e s t - f o r m \r 0062520 * 0062620 ( c l : r 0062640 e t u r n - f r o m \r 0062660 * 0062760 , b l o c k - n a 0063000 m e \r 0063020 * 0063100 ( 0063120 c l : v a l u e s ) ) ) \r 0063140 * 0063220 ( a s s e 0063240 r t - f a i l , s t r i n g 0063260 , @ a r g s ) \r 0063300 * 0063360 ( g o , a g a i n 0063400 ) ) ) ) ) \r \r ( d e f m a c r o 0063420 006 002 h a n d l e r - b i n d 006 0063440 001 ( b i n d i n g s & r e s 0063460 t f o r m s ) " E v a l f 0063500 o r m s u n d e r t e m p o 0063520 r a r y n e w c o n d i t i 0063540 o n h a n d l e r s . " \r 0063560 ` ( l e t ( ( * c o n d i t 0063600 i o n - h a n d l e r - b i n d 0063620 i n g s * ( l i s t * , @ ( 0063640 e x t r a c t - c o n d i t i o 0063660 n - b i n d i n g s ( \r 0063700 * 0064000 n o r m a l i z e 0064020 - c o n d i t i o n - c l a u s 0064040 e s \r 0064060 * 0064160 b i n d i n g s ) ) \r 0064200 * 0064240 * c o n 0064260 d i t i o n - h a n d l e r - b 0064300 i n d i n g s * ) ) ) \r 0064320 , @ f o r m s ) ) \r \r 0064340 ( d e f m a c r o 006 002 c o n d 0064360 i t i o n - b i n d 006 001 ( b i 0064400 n d i n g s & r e s t f o r 0064420 m s ) \r 0064440 " E v 0064460 a l f o r m s u n d e r t 0064500 e m p o r a r y n e w c o n 0064520 d i t i o n h a n d l e r s ; 0064540 s y n o n y m f o r H A N 0064560 D L E R - B I N D " \r ` ( 0064600 h a n d l e r - b i n d , b i 0064620 n d i n g s , @ f o r m s ) ) 0064640 \r \r ( d e f m a c r o 006 002 c o 0064660 n d i t i o n - c a s e 006 001 ( 0064700 f o r m & r e s t b i n d i 0064720 n g s ) \r 0064740 0064760 " E v a l f o r m u n d e 0065000 r c o n d i t i o n h a n d 0065020 l e r s t h a t p r o v i d 0065040 e a l t e r n a t e c o n t 0065060 i n u a t i o n s . " \r ( 0065100 w i t h - g e n s y m s \r 0065120 ( c o n d i t i o n c l : v 0065140 a l u e s b n a m e h a n d 0065160 l e r ) \r " C O N D I T 0065200 I O N - C A S E " \r ( l 0065220 e t \r ( ( c l a u s e 0065240 s ( n o r m a l i z e - c o n 0065260 d i t i o n - c l a u s e s b 0065300 i n d i n g s ) ) ) \r 0065320 ( 006 002 | i f | 006 001 ( n u l l 0065340 c l a u s e s ) \r 0065360 006 002 | t h e n | 006 001 f o r 0065400 m \r 006 002 | e l s e 0065420 | 006 001 ` ( l e t * ( ( , c o 0065440 n d i t i o n n i l ) \r 0065460 0065500 ( , c l : v a l u e s ( 0065520 c o n d i t i o n - b l o c k \r 0065540 * 0065600 , b n a m e \r 0065620 0065640 ( l e 0065660 t ( ( , h a n d l e r ( f u 0065700 n c t i o n ( c l : l a m b d 0065720 a ( c ) \r 0065740 * 0066020 ( c l : s e 0066040 t f , c o n d i t i o n c ) 0066060 \r 0066100 * 0066160 ( c o n d i t i o n - 0066200 r e t u r n , b n a m e ) ) ) 0066220 ) ) \r 0066240 0066260 ( h a n d 0066300 l e r - b i n d ( ( , ( c l : 0066320 m a p c a r ( f u n c t i o n 0066340 c a r ) \r 0066360 * 0066440 c l a u s e s ) , 0066460 h a n d l e r ) ) \r 0066500 * 0066540 ( c l : m u l 0066560 t i p l e - v a l u e - l i s t 0066600 , f o r m ) ) ) ) ) ) \r 0066620 0066640 ( c l : i f , c o n d i t 0066660 i o n , ( 006 002 | i f | 006 001 ( 0066700 e q l ( l e n g t h c l a u 0066720 s e s ) \r 0066740 * 0067000 1 ) \r 0067020 * 0067060 006 002 | t h e n | 006 0067100 001 ( c a d r ( c a r ( m a 0067120 s s a g e - c a t c h - c o n d 0067140 i t i o n - c l a u s e s \r 0067160 * 0067260 c l a u s e s c o n d 0067300 i t i o n ) ) ) \r 0067320 * 0067360 006 002 | e l s e | 006 001 ` ( 0067400 c o n d i t i o n - t y p e c a 0067420 s e , c o n d i t i o n \r 0067440 * 0067520 , @ ( m a s s a g 0067540 e - c a t c h - c o n d i t i o 0067560 n - c l a u s e s c l a u s e 0067600 s \r 0067620 * 0067700 c o n d i t i o n ) \r 0067720 * 0070000 ( t ( c l : 0070020 e r r o r \r 0070040 * 0070100 " B u g i n 0070120 c o n d i t i o n - c a s e ! 0070140 ~ & U n e x p e c t e d c o n 0070160 d i t i o n : ~ S . " \r 0070200 * 0070300 , c o n d i t i o n ) ) ) ) ( 0070320 c l : v a l u e s - l i s t \r 0070340 * 0070460 , c l : v a l u e s ) ) ) ) 0070500 ) ) ) \r \r ( d e f m a c r o 006 0070520 002 r e a l - c o n d i t i o n - 0070540 c a s e 006 001 ( f o r m & r e 0070560 s t c a s e s ) \r 0070600 0070620 " E v a l f o r m 0070640 u n d e r c o n d i t i o n 0070660 h a n d l e r s t h a t p 0070700 r o v i d e a l t e r n a t e 0070720 c o n t i n u a t i o n s . " 0070740 \r ( w i t h - g e n s y m 0070760 s \r ( o u t e r i n n 0071000 e r c o n d i t i o n d u m 0071020 m y ) \r " C O N D I T I 0071040 O N - C A S E " \r ` ( c 0071060 l : b l o c k \r , o 0071100 u t e r \r ( c l : m 0071120 u l t i p l e - v a l u e - c a 0071140 l l \r ' c l : f u 0071160 n c a l l \r ( c l 0071200 : b l o c k \r , 0071220 i n n e r \r ( h 0071240 a n d l e r - b i n d \r 0071260 , ( 006 002 f o r 006 001 c 0071300 a s e 006 002 i n 006 001 c a s e s 0071320 \r 006 002 0071340 c o l l e c t 006 001 \r 0071360 ( d e s t r u c t 0071400 u r i n g - b i n d \r 0071420 ( t y p e s 0071440 b v l . b o d y ) \r 0071460 c a s e \r 0071500 ` ( , 0071520 t y p e s \r 0071540 ( f u n c t i o n 0071560 ( c l : l a m b d a \r 0071600 0071620 ( , c o n d i t i o 0071640 n ) \r 0071660 ( c 0071700 l : r e t u r n - f r o m \r 0071720 0071740 , i n n e r 0071760 \r 0072000 ( c l 0072020 : v a l u e s \r 0072040 0072060 ( f u n c t i o n ( 0072100 c l : l a m b d a \r 0072120 * 0072160 , @ ( c l : i f b v l ( 0072200 l i s t b v l ) \r 0072220 * 0072260 ` ( ( , d 0072300 u m m y ) \r 0072320 * 0072360 ( 006 002 d e c l 0072400 a r e 006 001 ( i g n o r e , d 0072420 u m m y ) ) ) ) \r 0072440 * 0072500 , @ b o d y ) ) \r 0072520 0072540 , c o n d i t i o 0072560 n ) ) ) ) ) ) ) \r 0072600 ( c l : r e t u r n - f r o 0072620 m , o u t e r , f o r m ) ) 0072640 ) ) ) ) ) \r \r ( d e f m a c r o 0072660 006 002 i g n o r e - e r r o r s 0072700 006 001 ( & b o d y f o r m s ) 0072720 " E v a l f o r m s w i t 0072740 h h a n d l e r f o r a n 0072760 y c o n d i t i o n o f t 0073000 y p e E R R O R . " \r ` 0073020 ( c o n d i t i o n - c a s e 0073040 ( p r o g n , @ f o r m s ) \r 0073060 ( e r r o 0073100 r ( c o n d i t i o n ) \r 0073120 0073140 n i l ) ) ) \r \r ( d e f m a c r 0073160 o 006 002 p r o c e e d - c a s e 0073200 006 001 ( f o r m & r e s t c 0073220 l a u s e s ) \r 0073240 * 0073300 " E v a l f o r m s , 0073320 e s t a b l i s h i n g a 0073340 p l a c e t o p r o c e e d 0073360 f r o m e r r o r s . " \r 0073400 ( w i t h - g e n s y m s \r 0073420 ( s e l e c t o r c l 0073440 : v a l u e s t a g ) \r 0073460 " P R O C E E D - C A S E " \r 0073500 ( c l : m u l t i p l e 0073520 - v a l u e - b i n d \r 0073540 ( c a s e s b o d i e s ) \r 0073560 ( s p l i t - p r o c 0073600 e e d - c l a u s e s c l a u 0073620 s e s t a g ) \r ( 006 0073640 002 | i f | 006 001 ( n u l l c a 0073660 s e s ) \r 006 002 0073700 | t h e n | 006 001 f o r m \r 0073720 006 002 | e l s e | 006 001 0073740 ` ( d e s t r u c t u r i n g - 0073760 b i n d ( , s e l e c t o r 0074000 \ \ \ , c l : v a l u e s ) \r 0074020 0074040 ( l e t ( ( , t a 0074060 g ( l i s t n i l ) ) ) \r 0074100 0074120 ( c l : c a 0074140 t c h , t a g ( c o n s : 0074160 n o r m a l ( l e t ( ( * p 0074200 r o c e e d - c a s e s * ( l 0074220 i s t * , @ c a s e s \r 0074240 * 0074360 * p r o c e e d - c a s 0074400 e s * \r 0074420 * 0074520 ) ) ) \r 0074540 * 0074620 ( c l : m 0074640 u l t i p l e - v a l u e - l i 0074660 s t , f o r m ) ) ) ) ) \r 0074700 0074720 ( c l : i f ( e q , 0074740 s e l e c t o r : n o r m a l 0074760 ) \r 0075000 ( 0075020 c l : v a l u e s - l i s t , 0075040 c l : v a l u e s ) \r 0075060 0075100 ( c l : a p p l 0075120 y , ( 006 002 | i f | 006 001 ( e q 0075140 l ( l e n g t h b o d i e s 0075160 ) \r 0075200 * 0075240 1 ) \r 0075260 * 0075320 006 002 | t h e n | 006 001 ( 0075340 c a d r ( c a r b o d i e s 0075360 ) ) \r 0075400 0075420 006 002 | 0075440 e l s e | 006 001 ` ( c a s e , 0075460 s e l e c t o r , @ b o d i e 0075500 s ) ) , c l : v a l u e s ) ) 0075520 ) ) ) ) ) \r \r ( d e f m a c r o 0075540 006 002 r e a l - p r o c e e d - 0075560 c a s e 006 001 ( f o r m & r e 0075600 s t c l a u s e s ) \r 0075620 * 0075660 " E v a l f o 0075700 r m s , e s t a b l i s h i n 0075720 g a p l a c e t o p r o 0075740 c e e d f r o m e r r o r s 0075760 . " \r ( w i t h - g e n s 0076000 y m s ( o u t e r t a g d 0076020 u m m y ) \r 0076040 " P R O C E E D - C A S E " \r 0076060 ` ( c l : b l 0076100 o c k , o u t e r ( l e t * 0076120 ( ( , t a g ( l i s t n i 0076140 l ) ) \r 0076160 0076200 ( * p r o c e e d 0076220 - c a s e s * ( l i s t * , 0076240 @ ( m a p c a r c l a u s e s 0076260 \r 0076300 * 0076360 ( f u n c t i o n ( 0076400 c l : l a m b d a ( c l a u s 0076420 e ) \r 0076440 * 0076540 ( \r 0076560 * 0076660 p r o c e e d - c 0076700 a s e - f r o m - c l a u s e \r 0076720 * 0077040 c l a u s e t a g 0077060 \r 0077100 * 0077200 d u m m y ) ) ) 0077220 ) \r 0077240 * 0077300 * p 0077320 r o c e e d - c a s e s * ) ) ) 0077340 \r 0077360 0077400 ( c l : m u l t i p l e - 0077420 v a l u e - c a l l ' c l : f 0077440 u n c a l l ( c l : c a t c h 0077460 , t a g \r 0077500 * 0077600 ( c l : r e t u r n - f r 0077620 o m \r 0077640 * 0077740 , o u t e r \r 0077760 * 0100060 , f o r m ) ) ) ) ) 0100100 ) ) \r \r ( d e f d e f i n e r 0100120 006 002 d e f i n e - p r o c e e d 0100140 - f u n c t i o n 006 001 \r f 0100160 u n c t i o n s \r ( n a m 0100200 e & r e s t t a i l & a u 0100220 x v a r s ) \r ( c l : m 0100240 u l t i p l e - v a l u e - b i 0100260 n d \r ( t e s t r e p 0100300 o r t a r g l i s t ) \r 0100320 ( p r o c e s s - p r o c e e 0100340 d - k e y w o r d s n a m e 0100360 t a i l ) \r ( c l : s e 0100400 t f v a r s ( m a p c a r 0100420 a r g l i s t ( f u n c t i o 0100440 n ( l a m b d a ( x ) \r 0100460 * 0100520 ( c l : 0100540 i f ( c l : s y m b o l p x 0100560 ) \r 0100600 * 0100640 x \r 0100660 * 0100720 ( c 0100740 a r x ) ) ) ) ) ) \r ( 0100760 c l : u n l e s s t e s t ( 0101000 c l : s e t f t e s t ' t r 0101020 u e ) ) \r ( c l : u n l 0101040 e s s r e p o r t ( c l : s 0101060 e t f r e p o r t ' d e f a 0101100 u l t - p r o c e e d - r e p o 0101120 r t e r ) ) \r ` ( p r o 0101140 g n , @ ( c l : i f ( c l : 0101160 c o n s p t e s t ) \r 0101200 0101220 ( l e t ( ( t e s t e r ( 0101240 % s u f f i x - s y m b o l n 0101260 a m e " - p r o c e e d - t e 0101300 s t " ) ) ) \r 0101320 0101340 ( p r o g 1 ` ( ( c l : s e 0101360 t f ( c l : s y m b o l - f u 0101400 n c t i o n ' , t e s t e r ) 0101420 \r 0101440 0101460 ( f u n c 0101500 t i o n , t e s t ) ) ) ( s 0101520 e t q t e s t t e s t e r ) 0101540 ) ) ) \r 0101560 ( c l : s e t f ( d e f a u l 0101600 t - p r o c e e d - t e s t ' 0101620 , n a m e ) \r 0101640 ' , t e s t 0101660 ) \r , @ 0101700 ( c l : i f ( c l : c o n s p 0101720 r e p o r t ) \r 0101740 ( l 0101760 e t ( ( r e p o r t e r ( % 0102000 s u f f i x - s y m b o l n a 0102020 m e " - p r o c e e d - r e p 0102040 o r t e r " ) ) ) \r 0102060 0102100 ( p r o g 1 ` ( ( c l 0102120 : s e t f ( c l : s y m b o l 0102140 - f u n c t i o n ' , r e p o 0102160 r t e r ) \r 0102200 * 0102240 ( f u n c t i o n , r e p o r 0102260 t ) ) ) ( s e t q r e p o r 0102300 t r e p o r t e r ) ) ) ) \r 0102320 ( c l : s 0102340 e t f ( d e f a u l t - p r o 0102360 c e e d - r e p o r t ' , n a 0102400 m e ) \r 0102420 ' , r e p o r t ) 0102440 \r ( c l 0102460 : s e t f ( p r o c e e d - a 0102500 r g - c o l l e c t o r ' , n 0102520 a m e ) \r 0102540 ( f u n c t i o 0102560 n ( c l : l a m b d a ( & o 0102600 p t i o n a l c o n d i t i o 0102620 n , @ a r g l i s t ) \r 0102640 * 0102700 ( l i s t , @ v a r s ) ) ) 0102720 ) \r ( c 0102740 l : d e f u n ( 006 002 \ \ \ , 006 0102760 001 n a m e ) ( & o p t i o n 0103000 a l c o n d i t i o n , @ a 0103020 r g l i s t ) ( c o n d i t i 0103040 o n - c a s e \r 0103060 * 0103140 ( i n v o 0103160 k e - p r o c e e d - c a s e \r 0103200 * 0103300 ' , n a m e c o n d i 0103320 t i o n , @ v a r s ) \r 0103340 * 0103440 ( b a d - p r o c e e d - c a s 0103460 e n i l n i l ) ) ) \r ) ) ) 0103500 \r \r ( d e f m a c r o 006 002 c a 0103520 t c h - a b o r t 006 001 ( p r i 0103540 n t - f o r m & b o d y f o 0103560 r m s ) ` ( p r o c e e d - c 0103600 a s e ( p r o g n , @ f o r 0103620 m s ) \r 0103640 * 0103700 ( a b o r 0103720 t ( c o n d i t i o n ) \r 0103740 * 0104020 : r e p 0104040 o r t \r 0104060 * 0104140 , p r i n t - f o r m : t 0104160 e s t t r u e ( c l : v a l 0104200 u e s \r 0104220 * 0104320 n i l c o 0104340 n d i t i o n ) ) \r 0104360 * 0104440 ) ) \r \r \r ( p u t p r o p s 0104460 006 002 c l - e r r o r f i l e t 0104500 y p e 006 001 c l : c o m p i l e 0104520 - f i l e ) \r ( d e c l a r e \ 0104540 : d o n t e v a l @ l o a d 0104560 d o e v a l @ c o m p i l e d 0104600 o n t c o p y c o m p i l e r 0104620 v a r s \r \r ( a d d t o v a r 0104640 006 002 n l a m a 006 001 ) \r \r ( a 0104660 d d t o v a r 006 002 n l a m l 006 0104700 001 ) \r \r ( a d d t o v a r 006 0104720 002 l a m a 006 001 ) \r ) \r ( p u t 0104740 p r o p s c l - e r r o r c 0104760 o p y r i g h t ( " X e r o x 0105000 C o r p o r a t i o n " 1 9 0105020 8 6 ) ) \r ( d e c l a r e \ : 0105040 d o n t c o p y \r ( f i l e 0105060 m a p ( n i l ) ) ) \r s t o p 0105100 \r 0105101