$ od -c -N 50000 [eris]<LispCore>SOURCES>CL-ERROR!10 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 1 9 : 1 1 : 2 7 " 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 0 006 001 3 4 9 9 7 \r \r 0000220 | c h a n g e s | 0000240 | t o : | ( v a r s c l - 0000260 e r r o r c o m s ) \r 0000300 0000320 ( f u n c t i o n s n o r 0000340 m a l i z e - s l o t - d e s c 0000360 r i p t i o n s s p l i t - p 0000400 r o c e e d - c l a u s e s \r 0000420 0000440 p r 0000460 o c e e d - c a s e - f r o m - 0000500 c l a u s e p r o c e s s - p 0000520 r o c e e d - k e y w o r d s 0000540 c h e c k - * c a s e - s e l e 0000560 c t o r \r 0000600 0000620 c o l l e c t - c a s e 0000640 - s e l e c t o r s d e f i n 0000660 e - c o n d i t i o n c l : c 0000700 t y p e c a s e c l : e c a s 0000720 e ) \r \r | p r e v i 0000740 o u s | | d a t e : | " 2 1 0000760 - O c t - 8 6 1 3 : 0 1 : 0 9 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 . \ ; 9 ) \r \r \r ; C o p y 0001060 r i g h t ( c ) 1 9 8 6 b 0001100 y X e r o x C o r p o r a t 0001120 i o n . A l l r i g h t s 0001140 r e s e r v e d . \r \r ( p r e 0001160 t t y c o m p r i n t c l - e 0001200 r r o r c o m s ) \r \r ( r p a q 0001220 q 006 002 c l - e r r o r c o m s 0001240 006 001 \r ( ( c o m 0001260 s ( * | ; ; | \r 0001300 " T e m p o 0001320 r a r y b o o t s t r a p p i 0001340 n g s t u f f . A n y t h i 0001360 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 n 0001520 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 n 0001600 ) ) \r ( c o m s 0001620 ( * | ; ; | " I n t e r n 0001640 a l s t u f f . " ) \r 0001660 ( e x p o r 0001700 t ( v a r i a b l e s % c o 0001720 n d i t i o n - t y p e s - r e 0001740 a l ) ) \r 0001760 ( f u n c t i o n s d e 0002000 f a u l t - p r o c e e d - r e 0002020 p o r t ) \r 0002040 ( f u n c t i o n s w 0002060 i t h - g e n s y m s w i t h 0002100 - e r r - l o o p - v a r s s 0002120 t r i p - k e y w o r d s m a 0002140 k e - f a k e - r e p o r t - f 0002160 u n c t i o n \r 0002200 m a 0002220 k e - r e p o r t - f u n c t i 0002240 o n m a k e - e n c a p s u l 0002260 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 n 0002320 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 n 0002400 g s n o r m a l i z e - c o n 0002420 d i t i o n - c l a u s e s \r 0002440 0002460 m a s s a g e - c a t 0002500 c h - c o n d i t i o n - c l a 0002520 u s e s s p l i t - p r o c e 0002540 e d - c l a u s e s p r o c e 0002560 e d - c a s e - f r o m - c l a 0002600 u s e \r 0002620 p r o c e s 0002640 s - p r o c e e d - k e y w o r 0002660 d s c h e c k - * c a s e - s 0002700 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 \r 0002740 0002760 n o - p r o c e e d - 0003000 t e s t % p r e f i x - s y m 0003020 b o l % s u f f i x - s y m b 0003040 o l p r o c e e d - a r g - c 0003060 o l l e c t o r ) ) \r 0003100 ( c o m s ( * | ; ; | 0003120 \r " U s 0003140 e r - v i s i b l e f o r m s 0003160 . T h e s e s h o u l d a 0003200 l l b e e x t e r n a l s 0003220 y m b o l s . A n y o t h e 0003240 r s s h o u l d b e i n t 0003260 e r n a l . " \r 0003300 ) \r 0003320 ( f u n c t i 0003340 o n s d e f i n e - c o n d i 0003360 t i o n c l : c h e c k - t y 0003400 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 \r 0003460 0003500 c l : a s s e r t h 0003520 a n d l e r - b i n d c o n d 0003540 i t i o n - b i n d c o n d i 0003560 t i o n - c a s e r e a l - c 0003600 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 r 0003660 s p r o c e e d - c a s e r 0003700 e a l - p r o c e e d - c a s e 0003720 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 - a 0003760 b o r t \r 0004000 ) ) \r 0004020 ( p r o p f i l e t 0004040 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 d 0004120 o e v a l @ c o m p i l e d o 0004140 n t c o p y c o m p i l e r v 0004160 a r s ( a d d v a r s ( n l 0004200 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 t 0004520 r a p p i n g s t u f f . A 0004540 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 c 0004600 e C L s t a r t s w o r k 0004620 i n g . " ) 006 001 \r \r ( d e f m a 0004640 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 e 0004700 c t & r e s t c l a u s e s 0004720 ) \r ( l e t \r ( ( 0004740 v a l ( c l : g e n s y m ) ) 0004760 ) \r ( c l : i f % c o 0005000 n d i t i o n - t y p e s - r e 0005020 a l ` ( c l : t y p e c a s e 0005040 , o b j e c t , @ c l a u s 0005060 e s ) \r ` 0005100 ( l e t ( ( , v a l , o b j 0005120 e c t ) ) \r 0005140 ( c o n d \r 0005160 0005200 , @ ( c l : m a p c a r ( f 0005220 u n c t i o n ( c l : l a m b 0005240 d a \r 0005260 0005300 ( 0005320 c l a u s e ) \r 0005340 * 0005400 ( d e s t r u c t u r i 0005420 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 p 0006120 , v a l ' , s e l e c t o r 0006140 ) \r 0006160 * 0006220 , @ b o d y ) ) 0006240 ) ) ) \r 0006260 0006300 c l a u s e s ) ) ) ) ) ) \r \r 0006320 ( d e f m a c r o 006 002 c o n d 0006340 i t i o n - b l o c k 006 001 ( t 0006360 a g & b o d y f o r m s ) 0006400 ` ( c l : c a t c h ' , t a g 0006420 , @ f o r m s ) ) \r \r ( d e f 0006440 m a c r o 006 002 c o n d i t i o 0006460 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 t 0006520 ) ` ( c l : t h r o w ' , t 0006540 a g , r e s u l t ) ) \r \r \r \r 0006560 \r 006 004 ( * | ; ; | " I n t e 0006600 r n a l s t u f f . " ) 006 001 \r 0006620 \r ( * F O L L O W I N G D E 0006640 F I N I T I O N S E X P O R T 0006660 E D ) \r \r \r ( c l : d e f c o n 0006700 s t a n t 006 002 % c o n d i t i 0006720 o n - t y p e s - r e a l 006 001 0006740 n i l ) \r \r \r \r ( * E N D E 0006760 X P O R T E D D E F I N I T I 0007000 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 e 0007040 d - r e p o r t 006 001 ( p r o c 0007060 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 e 0007240 f a u l t - p r o c e e d - r e 0007260 p o r t e r ) ) \r \r ( d e f m a 0007300 c r o 006 002 w i t h - g e n s y 0007320 m s 006 001 ( v a r s p r e f i 0007340 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 ) \r 0007440 * 0007500 ` ( , v a r ( 0007520 g e n s y m , p r e f i x ) ) 0007540 ) ) ) , @ b o d y ) ) \r \r ( d 0007560 e f m a c r o 006 002 w i t h - e 0007600 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 d 0007640 y ) ` ( w i t h - g e n s y m 0007660 s ( v a l b l o c k - n a m 0007700 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 l 0010120 : d e f u n 006 002 s t r i p - k 0010140 e y w o r d s 006 001 ( a r g s ) 0010160 ( c l : v a l u e s ( 006 002 f 0010200 o r 006 001 006 002 o l d 006 001 a r g 0010220 s 006 002 o n 006 001 a r g s 006 002 0010240 b y 006 001 c d d r \r 0010260 * 0010320 006 002 w h i l e 006 0010340 001 ( c l : k e y w o r d p ( 0010360 c l : f i r s t a r g s ) ) \r 0010400 * 0010440 006 002 0010460 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 ) \r 0010520 * 0010600 ( c l : 0010620 s e c o n d a r g s ) ) ) \r 0010640 * 0010700 a r g s ) ) \r \r ( c 0010720 l : d e f u n 006 002 m a k e - f 0010740 a k e - r e p o r t - f u n c t 0010760 i o n 006 001 ( d a t u m b o u 0011000 n d - v a r & o p t i o n a l 0011020 e n c a p s u l a t i o n ) \r 0011040 ( c l : e t y p e c a s e 0011060 d a t u m ( s t r i n g ` 0011100 ( l a m b d a ( d a t u m s 0011120 t r e a m ) \r 0011140 0011160 ( 006 002 d e c l 0011200 a r e 006 001 ( i g n o r e d a 0011220 t u m ) ) \r 0011240 0011260 ( c l : w r i t 0011300 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 b 0011360 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 u 0011460 l l e n c a p s u l a t i o n 0011500 ) \r 0011520 d a t 0011540 u m \r 0011560 ` ( 0011600 l e t , e n c a p s u l a t i 0011620 o n , d a t u m ) ) ) ) ) ) \r 0011640 \r ( c l : d e f u n 006 002 m a k 0011660 e - r e p o r t - f u n c t i o 0011700 n 006 001 ( d a t u m b o u n d 0011720 - v a r & o p t i o n a l t 0011740 y p e - n a m e ) \r ( c l 0011760 : e t y p e c a s e d a t u m 0012000 ( s t r i n g ` ( l a m b d 0012020 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 ) ) \r 0012140 * 0012200 ( c l : w r i t e - s t r i 0012220 n g , d a t u m s t r e a m 0012240 ) ) ) \r ( l 0012260 i s t ` ( l a m b d a ( , b 0012300 o u n d - v a r * s t a n d a 0012320 r d - o u t p u t * ) \r 0012340 , 0012360 ( c l : i f t y p e - n a m e 0012400 ` ( 006 002 w i t h 006 001 , t y p 0012420 e - n a m e , b o u n d - v a 0012440 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 a 0012520 t i o n 006 001 ( c o n d i t i o 0012540 n - t y p e s l o t - n a m e 0012560 s ) \r ( m a p c a r ( c 0012600 l : r e m o v e ' - - d u m m 0012620 y - s l o t - - s l o t - n a 0012640 m e s ) \r ( 0012660 f u n c t i o n ( l a m b d a 0012700 ( s l o t ) \r 0012720 ` ( 0012740 , s l o t ( , ( % s u f f i x 0012760 - s y m b o l c o n d i t i o 0013000 n - t y p e ( c l : c o n c a 0013020 t e n a t e ' s t r i n g " 0013040 - " \r 0013060 * 0013140 ( c l : s y m 0013160 b o l - n a m e s l o t ) ) ) 0013200 \r 0013220 0013240 c o n d i t i o n 0013260 ) ) ) ) ) ) \r \r ( c l : d e f u 0013300 n 006 002 n o r m a l i z e - s l 0013320 o t - d e s c r i p t i o n s 006 0013340 001 ( s l o t s ) \r ( m a 0013360 p c a r s l o t s ( f u n c 0013400 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 001 0013500 ( l i s t p s l o t ) \r 0013520 * 0013560 006 002 t h e n 006 001 ( 006 002 0013600 i f 006 001 ( e q u a l ( l e n 0013620 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 e 0014020 n d s l o t ' ( n i l : r 0014040 e a d o n l y t ) ) \r 0014060 * 0014120 006 002 e l s e 006 0014140 001 ` ( , ( c a r s l o t ) 0014160 , ( c a d r s l o t ) : r e 0014200 a d - o n l y t \r 0014220 * 0014300 , @ ( c d d r s l o t 0014320 ) ) ) \r 0014340 0014360 006 002 e l s e 006 001 0014400 ` ( , s l o t n i l : r e 0014420 a d - o n l y t ) ) ) ) ) ) \r 0014440 \r ( c l : d e f u n 006 002 e x t 0014460 r a c t - c o n d i t i o n - b 0014500 i n d i n g s 006 001 ( c l a u s 0014520 e s ) \r ( m a p c a r c 0014540 l a u s e s ( f u n c t i o n 0014560 ( c l : l a m b d a ( c l a 0014600 u s e ) \r 0014620 0014640 ` ( c o n s 0014660 ' , ( c l : f i r s t c l a u 0014700 s e ) , ( c l : s e c o n d 0014720 c l a u s e ) ) ) ) ) ) \r \r ( c 0014740 l : d e f u n 006 002 n o r m a l 0014760 i z e - c o n d i t i o n - c l 0015000 a u s e s 006 001 ( c l a u s e s 0015020 ) \r ( m a p c o n c c l 0015040 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 s 0015140 e ) \r 0015160 0015200 ( l e t ( ( c o n d i t i 0015220 o n s ( c l : f i r s t c l 0015240 a u s e ) ) ) \r 0015260 0015300 ( c l : 0015320 t y p e c a s e \r 0015340 0015360 c o 0015400 n d i t i o n s \r 0015420 0015440 ( l 0015460 i s t ( c l : i f ( e q ( 0015500 c l : f i r s t c o n d i t i 0015520 o n s ) \r 0015540 * 0015600 ' q u o t 0015620 e ) \r 0015640 * 0015700 ( c l : e r r o r \r 0015720 * 0016000 " B a d c o 0016020 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 o 0016060 t e d . " \r 0016100 * 0016160 c o n d i t i o n s ) \r 0016200 * 0016240 ( m 0016260 a p c a r c o n d i t i o n s 0016300 \r 0016320 * 0016360 ( f u n c t 0016400 i o n ( c l : l a m b d a \r 0016420 * 0016520 ( c ) \r 0016540 * 0016620 ( c l : i 0016640 f ( c l : s y m b o l p c ) 0016660 \r 0016700 * 0016760 ( c o n 0017000 s c ( c d r c l a u s e ) 0017020 ) \r 0017040 * 0017120 ( c l 0017140 : 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 o 0017300 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 b 0017540 o l ( l i s t c l a u s e ) 0017560 ) \r 0017600 0017620 ( t ( c l : e r 0017640 r o r \r 0017660 0017700 " B a 0017720 d c o n d i t i o n s p e c 0017740 ~ s . S h o u l d b e s 0017760 y m b o l o r l i s t o f 0020000 s y m b o l s . " \r 0020020 * 0020060 c o n d i 0020100 t i o n s ) ) ) ) ) ) ) ) \r \r ( 0020120 c l : d e f u n 006 002 m a s s a 0020140 g e - c a t c h - c o n d i t i 0020160 o n - c l a u s e s 006 001 ( c l 0020200 a u s e s i n i t - v a l u e 0020220 ) \r ( m a p c a r c l a 0020240 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 i 0020420 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 ( c 0020620 l : i f ( n u l l b v l ) \r 0020640 * 0020700 ( c o n s s e l e 0020720 c t o r f o r m s ) \r 0020740 * 0021000 ( l i s t s e l e c t o r 0021020 ` ( l e t ( , ( l i s t ( 0021040 c a r b v l ) \r 0021060 * 0021140 i n i t 0021160 - v a l u e ) , @ ( c d r b 0021200 v l ) ) \r 0021220 * 0021300 , @ f o r m s ) ) ) ) ) ) ) ) \r 0021320 \r ( c l : d e f u n 006 002 s p l 0021340 i t - p r o c e e d - c l a u s 0021360 e s 006 001 ( c l a u s e s t a 0021400 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 s 0021460 e 006 002 i n 006 001 c l a u s e s 0021500 006 002 a s 006 001 s e l e c t o r 0021520 006 002 f r o m 006 001 0 \r 0021540 006 002 d o 006 001 ( d e s t r 0021560 u c t u r i n g - b i n d \r 0021600 ( n a m e v 0021620 a r s ) \r 0021640 c l a u s e \r 0021660 ( c l : m u l t i p l e - v 0021700 a l u e - b i n d \r 0021720 ( t e s t r e p o 0021740 r t t a i l ) \r 0021760 ( p r o c e s s - p r 0022000 o c e e d - k e y w o r d s n 0022020 a m e ( c d d r c l a u s e 0022040 ) ) \r ( 0022060 006 002 i f 006 001 ( n u l l n a m 0022100 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 s 0022240 s r e p o r t ( c l : e r r 0022260 o r \r 0022300 * 0022340 " U n n a m e d p r o c e 0022360 e d c a s e s m u s t h a 0022400 v e a r e p o r t m e t h 0022420 o d : ~ S " \r 0022440 * 0022500 c l a u s e ) ) \r 0022520 006 002 0022540 e l s e 006 001 ( c l : u n l e s 0022560 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 002 0022720 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 f 0023040 o r p r o c e e d t y p e 0023060 ~ A : m a y b e u n d e f 0023100 i n e d . " \r 0023120 * 0023160 n a m e ) 0023200 ) ) \r 0023220 ( c l : u n l e s s 0023240 r e p o r t ( c l : s e t f 0023260 r e p o r t ` ( c l : l a m 0023300 b d a ( p c s t r e a m ) \r 0023320 * 0023400 ( c l 0023420 : f u n c a l l ( d e f a u l 0023440 t - p r o c e e d - r e p o r t 0023460 \r 0023500 * 0023560 ' , n a m 0023600 e ) \r 0023620 * 0023700 p c s t r e a m 0023720 ) ) ) ) ) \r 0023740 ( c l : p u s h ` ( m a k 0023760 e - p r o c e e d - c a s e : 0024000 n a m e ' , n a m e : t a g 0024020 , t a g : s e l e c t o r 0024040 , s e l e c t o r : t e s t \r 0024060 0024100 , ( a 0024120 n d t e s t ` ( f u n c t i 0024140 o n , t e s t ) ) : r e p o 0024160 r t ( f u n c t i o n , r e 0024200 p o r t ) ) c a s e s ) \r 0024220 ( c l : p u 0024240 s h ` ( , s e l e c t o r ( 0024260 f u n c t i o n ( c l : l a m 0024300 b d a , v a r s , @ t a i l 0024320 ) ) ) b o d i e s ) ) ) ) \r 0024340 ( c l : v a l u e s ( r 0024360 e v e r s e c a s e s ) \r 0024400 ( r e v e r s 0024420 e b o d i e s ) ) ) ) \r \r ( c 0024440 l : d e f u n 006 002 p r o c e e 0024460 d - c a s e - f r o m - c l a u 0024500 s e 006 001 ( c l a u s e t a g 0024520 d u m m y ) \r ( d e s t 0024540 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 e 0024620 \r ( c l : m u l t i p l 0024640 e - v a l u e - b i n d \r 0024660 ( t e s t r e p o r t b 0024700 o d y ) \r ( p r o c e 0024720 s s - p r o c e e d - k e y w o 0024740 r d s n a m e t a i l ) \r 0024760 ( 006 002 i f 006 001 ( n u l 0025000 l n a m e ) \r 0025020 006 002 t h e n 006 001 ( c l : u n 0025040 l e s s t e s t ( c l : s e 0025060 t f t e s t ' t r u e ) ) \r 0025100 ( c 0025120 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 m 0025160 e d p r o c e e d c a s e s 0025200 m u s t h a v e a r e p 0025220 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 001 0025340 ( c l : u n l e s s t e s t 0025360 ( 006 002 i f 006 001 ( n o t ( g 0025400 e t n a m e ' % d e f a u l 0025420 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 a 0025520 r n \r 0025540 0025560 " 0025600 N o t e s t s p e c i f i e 0025620 d f o r p r o c e e d t y 0025640 p e ~ A : m a y b e u n 0025660 d e f i n e d . " \r 0025700 * 0025740 n a m e ) ) ) \r 0025760 ( c l : u 0026000 n l e s s r e p o r t ( c l 0026020 : s e t f r e p o r t ` ( c 0026040 l : l a m b d a ( p c s t r 0026060 e a m ) \r 0026100 * 0026140 ( c l : f 0026160 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 m 0026440 ) ) ) ) ) \r ` ( m a k 0026460 e - r e a l - p r o c e e d - c 0026500 a s e : n a m e ' , n a m e 0026520 : t a g , t a g : c o n t 0026540 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 t 0026620 i o n a l , @ ( o r v a r s 0026640 ( l i s t d u m m y ) ) ) \r 0026660 0026700 , @ 0026720 b o d y ) ) \r 0026740 : t e s t \r 0026760 , ( a n d t e s 0027000 t ` ( f u n c t i o n , t e 0027020 s t ) ) : r e p o r t ( f u 0027040 n c t i o n , r e p o r t ) ) 0027060 ) ) ) \r \r ( c l : d e f u n 006 0027100 002 p r o c e s s - p r o c e e d 0027120 - k e y w o r d s 006 001 ( n a m 0027140 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 l 0027220 e - v a l u e - b i n d \r 0027240 ( k e y s t a i l 0027260 ) \r ( s t r i 0027300 p - k e y w o r d s a r g ) \r 0027320 ( 006 002 | f o r 0027340 | 006 001 p a i r 006 002 | i n | 006 0027360 001 k e y s \r 0027400 006 002 | d o | 006 001 ( d e s 0027420 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 s 0027560 t ( c l : i f t e s t ( c 0027600 l : e r r o r \r 0027620 * 0027660 " D u p l i 0027700 c a t e t e s t f o r m s 0027720 p e c i f i e d f o r p r o 0027740 c e e d t y p e ~ S . " \r 0027760 * 0030040 n a m e 0030060 ) ) \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 o 0030260 r \r 0030300 * 0030340 " D u p l i c a t e t 0030360 e s t f o r m s p e c i f i 0030400 e d f o r p r o c e e d t 0030420 y p e ~ S . " \r 0030440 * 0030520 n a m e ) ) \r 0030540 * 0030600 ( c l : s e t f t e s t 0030620 ` ( c l : l a m b d a ( c ) 0030640 \r 0030660 * 0030720 ( c o n 0030740 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 r 0031040 t - f u n c t i o n ( c l : i 0031060 f r e p o r t ( c l : e r r 0031100 o r \r 0031120 * 0031160 " D u p l i c a t e r e 0031200 p o r t f o r m s p e c i f 0031220 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 u 0031460 e ) ) \r 0031500 0031520 ( : r e p o r t ( c l : i 0031540 f r e p o r t ( c l : e r r 0031560 o r \r 0031600 * 0031640 " D u p l i c a t e r e 0031660 p o r t f o r m s p e c i f 0031700 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 o 0032120 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 ) ) ) \r 0032200 0032220 ( c 0032240 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 k 0032300 e y / v a l u e p a i r " \r 0032320 * 0032400 " I l l e g a l k e y w 0032420 o r d ~ S i n p r o c e e 0032440 d c a s e ~ S . " k e y 0032460 n a m e ) \r 0032500 0032520 ) ) ) ) \r 0032540 ( c l : v a l 0032560 u e s t e s t r e p o r t 0032600 t a i l ) ) ) ) \r \r ( c l : d e 0032620 f u n 006 002 c h e c k - * c a s 0032640 e - s e l e c t o r 006 001 ( s e 0032660 l e c t o r n a m e ) ( c l 0032700 : i f ( o r ( e q s e l e 0032720 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 ) ) \r 0033060 * 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 * 0033300 s 0033320 e l e c t o r n a m e ) \r 0033340 * 0033420 s e l e c t o r ) ) \r \r 0033440 ( c l : d e f u n 006 002 c o l l 0033460 e c t - c a s e - s e l e c t o 0033500 r s 006 001 ( c l a u s e s n a 0033520 m e ) \r ( m a p c o n c 0033540 c l a u s e s ( f u n c t i o 0033560 n ( c l : l a m b d a ( c l 0033600 a u s e ) \r 0033620 0033640 ( 006 002 i f 0033660 006 001 ( a n d ( c l : c o n s 0033700 p ( c a r c l a u s e ) ) \r 0033720 * 0033760 ( f 0034000 m e m b n a m e ' ( c l : e 0034020 c a s e c l : c c a s e ) ) ) 0034040 \r 0034060 0034100 006 002 t h e n 0034120 006 001 ( c l : c o p y - l i s t 0034140 ( 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 s 0034260 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 ( c 0034420 l : d e f u n 006 002 n o - p r o 0034440 c e e d - t e s t 006 001 ( n a m 0034460 e & a u x o n c e ) \r 0034500 ( p r o c e e d - c a s e ( h 0034520 a n d l e r - b i n d ( ( n o 0034540 - p r o c e e d - t e s t ( f 0034560 u n c t i o n ( c l : l a m b 0034600 d a \r 0034620 * 0034660 ( 0034700 c ) \r 0034720 * 0034760 ( 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 m 0035040 e c ) \r 0035060 * 0035140 n a 0035160 m e ) \r 0035200 * 0035260 ( c l : i f o n 0035300 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 : s 0035740 e t f o n c e t ) ) ) ) ) ) 0035760 ) \r 0036000 ( c l : e r 0036020 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 l 0036100 n i l : r e p o r t " U s 0036120 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 n 0036160 n o - p r o c e e d - t e s t 0036200 ( f u n c t i o n f a l s e 0036220 ) ) \r ( p r 0036240 o c e e d n i l : r e p o r 0036260 t " M a k e T R U E t h e 0036300 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 o 0036340 c e e d - t e s t \r 0036360 ( c l : s 0036400 e t f ( d e f a u l t - p r o 0036420 c e e d - t e s t n a m e ) \r 0036440 0036460 ( f u n c t i o 0036500 n t r u e ) ) ) ) ) \r \r ( c l 0036520 : d e f u n 006 002 % p r e f i x 0036540 - s y m b o l 006 001 ( p r e f i 0036560 x c l : s y m b o l ) ( c l 0036600 : i n t e r n ( c l : c o n c 0036620 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 o 0036660 l - n a m e \r 0036700 * 0037000 c l 0037020 : s y m b o l ) ) \r 0037040 * 0037100 ( c l 0037120 : s y m b o l - p a c k a g e 0037140 c l : s y m b o l ) ) ) \r \r ( c 0037160 l : d e f u n 006 002 % s u f f i 0037200 x - s y m b o l 006 001 ( c l : s 0037220 y m b o l s u f f i x ) ( c 0037240 l : i n t e r n ( c l : c o n 0037260 c a t e n a t e ' s t r i n g 0037300 ( c l : s y m b o l - n a m e 0037320 \r 0037340 * 0037440 c l : s y m b o 0037460 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 c 0037700 l : s y m b o l ) ) ) \r \r ( d e 0037720 f m a c r o 006 002 p r o c e e d 0037740 - a r g - c o l l e c t o r 006 001 0037760 ( n a m e ) " F u n c t i o 0040000 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 o 0040040 p t i o n a l a r g s ( e x 0040060 c l u d i n g t h e c o n d 0040100 i t i o n ) f o r a n a m 0040120 e d p r o c e e d c a s e . 0040140 " \r ` ( g e t , n a m e 0040160 ' % p r o c e e d - a r g - c 0040200 o l l e c t o r ) ) \r \r \r \r \r 006 0040220 004 ( * | ; ; | " U s e r - v 0040240 i s i b l e f o r m s . T h 0040260 e s e s h o u l d a l l b 0040300 e e x t e r n a l s y m b o 0040320 l s . A n y o t h e r s s 0040340 h o u l d b e i n t e r n a 0040360 l . " ) 006 001 \r \r ( d e f d e f i 0040400 n e r 006 002 d e f i n e - c o n 0040420 d i t i o n 006 001 \r s t r u 0040440 c t u r e s \r ( n a m e 0040460 p a r e n t - t y p e & r e s 0040500 t a r g s ) \r " D e f i 0040520 n e s a n e w c o n d i t 0040540 i o n t y p e " \r ( l e 0040560 t \r ( ( c l a s s - o p 0040600 t i o n s ` ( , @ ( c l : i f 0040620 % c o n d i t i o n - t y p e 0040640 s - r e a l ' ( ( : p r i n t 0040660 - f u n c t i o n % p r i n t 0040700 - c o n d i t i o n ) ) \r 0040720 0040740 ' ( ( : 0040760 t y p e l i s t ) \r 0041000 0041020 : n a m 0041040 e d ) ) ( : c o n s t r u c t 0041060 o r , ( % p r e f i x - s y m 0041100 b o l " % M A K E - " n a m 0041120 e ) ) \r 0041140 0041160 ( : c o p i e r n i l ) \r 0041200 0041220 ( : p r e d 0041240 i c a t e n i l ) ) ) \r 0041260 r e p o r t e r h a n d l 0041300 e r e n c a p s u l a t i o n 0041320 ) \r ( c l : m u l t i p 0041340 l e - v a l u e - b i n d \r 0041360 ( k e y s s l o t - d e 0041400 s c r i p t i o n s ) \r 0041420 ( s t r i p - k e y w o r d s 0041440 a r g s ) \r ( c l : 0041460 s e t f s l o t - d e s c r i 0041500 p t i o n s ( n o r m a l i z 0041520 e - s l o t - d e s c r i p t i 0041540 o n s s l o t - d e s c r i p 0041560 t i o n s ) ) \r ( a n 0041600 d ( n e q p a r e n t - t y 0041620 p e n a m e ) \r 0041640 ( l e t * ( ( a l l - s 0041660 u p e r - s l o t s ( s l o t 0041700 - l i s t p a r e n t - t y p 0041720 e ) ) \r 0041740 ( r e d e f i n e d - 0041760 s l o t s ( 006 002 f o r 006 001 s 0042000 l o t 006 002 i n 006 001 s l o t - 0042020 d e s c r i p t i o n s 006 002 w 0042040 h e n 006 001 ( c l : m e m b e r 0042060 ( c a r s l o t ) \r 0042100 * 0042200 a l l - s u p 0042220 e r - s l o t s ) \r 0042240 0042260 006 0042300 002 c o l l e c t 006 001 s l o t ) 0042320 ) ) \r 0042340 ( c l : p u s h ( l i s 0042360 t * : i n c l u d e p a r e 0042400 n t - t y p e r e d e f i n e 0042420 d - s l o t s ) \r 0042440 0042460 c l a s s - o p t i o n s ) \r 0042500 ( 0042520 c l : s e t f s l o t - d e s 0042540 c r i p t i o n s ( 006 002 f o r 0042560 006 001 s l o t 006 002 i n 006 001 s 0042600 l o t - d e s c r i p t i o n s 0042620 \r 0042640 0042660 006 0042700 002 u n l e s s 006 001 ( c l : m e 0042720 m b e r s l o t r e d e f i 0042740 n e d - s l o t s ) 006 002 c o l 0042760 l e c t 006 001 s l o t ) ) ) \r 0043000 ) \r 0043020 ( c l : u n l e s s ( a n d 0043040 n i l % c o n d i t i o n - t 0043060 y p e s - r e a l ) \r 0043100 ( c l : s e t f 0043120 e n c a p s u l a t i o n ( m 0043140 a k e - e n c a p s u l a t i o 0043160 n n a m e ( a p p e n d ( 0043200 s l o t - l i s t p a r e n t 0043220 - t y p e ) \r 0043240 * 0043320 ( m a p c a 0043340 r s l o t - d e s c r i p t i 0043360 o n s \r 0043400 * 0043460 ( f 0043500 u n c t i o n c a r ) ) ) ) ) 0043520 ) \r ( 006 002 f o r 006 001 0043540 p a i r 006 002 i n 006 001 k e y s 0043560 \r 006 002 d o 006 001 0043600 ( d e s t r u c t u r i n g - b 0043620 i n d \r 0043640 ( k e y v a l u e ) \r 0043660 p a i r \r 0043700 ( c a s e k 0043720 e y ( : c o n c - n a m e ( 0043740 c l : p u s h p a i r c l a 0043760 s s - o p t i o n s ) ) \r 0044000 ( 0044020 : r e p o r t - f u n c t i o n 0044040 ( 006 002 i f 006 001 r e p o r t e 0044060 r \r 0044100 0044120 006 002 t h e n 0044140 006 001 ( c l : e r r o r " R e 0044160 p o r t f u n c t i o n a l 0044200 r e a d y s p e c i f i e d 0044220 f o r ~ S . " \r 0044240 * 0044300 n a 0044320 m e ) \r 0044340 0044360 006 002 e l s e 0044400 006 001 ( c l : s e t f r e p o 0044420 r t e r v a l u e ) ) ) \r 0044440 0044460 ( : r e p o r t ( 006 002 i f 006 001 0044500 r e p o r t e r \r 0044520 0044540 006 002 t h e n 006 0044560 001 ( c l : e r r o r " R e p 0044600 o r t f u n c t i o n a l r 0044620 e a d y s p e c i f i e d f 0044640 o r ~ S . " n a m e ) \r 0044660 0044700 006 002 e l s 0044720 e 006 001 ( c l : s e t f r e p 0044740 o r t e r ( c l : i f ( a n 0044760 d n i l % c o n d i t i o n 0045000 - t y p e s - r e a l ) \r 0045020 * 0045100 ( m a k e - r e 0045120 p o r t - f u n c t i o n v a 0045140 l u e ' c o n d i t i o n \r 0045160 * 0045260 n a m e ) \r 0045300 * 0045360 ( m a k e - f a k e - r e 0045400 p o r t - f u n c t i o n v a 0045420 l u e \r 0045440 * 0045520 ' c o n d i t i o n 0045540 e n c a p s u l a t i o n ) ) 0045560 ) ) ) \r 0045600 ( : h a n d l e r - 0045620 f u n c t i o n ( 006 002 i f 006 001 0045640 h a n d l e r \r 0045660 * 0045720 006 002 t h e n 006 001 ( c l : e 0045740 r r o r " H a n d l e r a l 0045760 r e a d y s p e c i f i e d 0046000 f o r ~ S . " n a m e ) \r 0046020 * 0046060 006 002 e l s e 006 001 ( 0046100 c l : s e t f h a n d l e r 0046120 v a l u e ) ) ) \r 0046140 ( : h a n 0046160 d l e ( 006 002 i f 006 001 h a n d 0046200 l e r \r 0046220 0046240 006 002 t h e n 006 001 ( c l : 0046260 e r r o r " H a n d l e r a 0046300 l r e a d y s p e c i f i e d 0046320 f o r ~ S . " n a m e ) \r 0046340 0046360 006 002 e 0046400 l s e 006 001 ( c l : s e t f h 0046420 a n d l e r ` ( l a m b d a 0046440 ( c o n d i t i o n ) \r 0046460 * 0046540 , ( c l : i f ( n u l l 0046560 e n c a p s u l a t i o n ) \r 0046600 * 0046660 v a l 0046700 u e \r 0046720 * 0047000 ` ( l e t , e n c a p s u l 0047020 a t i o n , v a l u e ) ) ) ) 0047040 ) ) \r 0047060 ( c l : o t h e r w i 0047100 s e ( c l : c e r r o r " S 0047120 k i p k e y - v a l u e p a 0047140 i r " " I l l e g a l k e y 0047160 w o r d ~ S i n ~ S . " 0047200 k e y \r 0047220 0047240 ' d e f i 0047260 n e - c o n d i t i o n ) ) ) ) 0047300 ) \r ` ( p r o g n ( 0047320 c l : d e f s t r u c t ( 006 002 0047340 ( \ \ \ , n a m e ) 006 001 , @ 0047360 c l a s s - o p t i o n s ) , 0047400 @ s l o t - d e s c r i p t i o 0047420 n s ) \r \r 0047440 , @ ( c l : i f ( n e q 0047460 n a m e p a r e n t - t y p 0047500 e ) \r 0047520 ` ( ( f i x - 0047540 i n h e r i t a n c e - l i n k 0047560 s ' , n a m e ' , p a r e n 0047600 t - t y p e ) ) ) \r 0047620 , @ ( c l : i f 0047640 ( c l : c o n s p h a n d l e 0047660 r ) \r 0047700 ( l e t ( ( 0047720 h a n d l e r - n a m e ( % s 0047740 u f f i x - s y m b o l n a m 0047760 e " d e f a u l t h a n d 0050000 l e r " ) ) ) \r 0050020 0050040 ( p r o g 1 ` ( ( c l : 0050060 s e t f ( c l : s y m b o l - 0050100 f u n c t i o n ' , h a n d l 0050120 e r - n a m e ) \r 0050140 * 0050200 ( f u n c t i o n , h 0050220 a n d l e r ) ) ) ( s e t q 0050240 h a n d l e r h a n d l e r - 0050260 n a m e ) ) ) ) \r 0050300 ( c l : s e t f ( 0050320 c o n d i t i o n - h a n d l e 0050340 r ' , n a m e ) \r 0050360 , ( 0050400 a n d h a n d l e r ` ( f u 0050420 n c t i o n , h a n d l e r ) 0050440 ) ) \r 0050460 , @ ( c l : i f ( c l : c o n 0050500 s p r e p o r t e r ) \r 0050520 0050540 ( l e t ( ( r e p o r t 0050560 e r - n a m e ( % s u f f i x 0050600 - s y m b o l n a m e " r 0050620 e p o r t m e t h o d " ) ) ) 0050640 \r 0050660 ( p r o 0050700 g 1 ` ( ( c l : s e t f ( c 0050720 l : s y m b o l - f u n c t i o 0050740 n ' , r e p o r t e r - n a m 0050760 e ) \r 0051000 0051020 ( f 0051040 u n c t i o n , r e p o r t e 0051060 r ) ) ) ( s e t q r e p o r 0051100 t e r r e p o r t e r - n a m 0051120 e ) ) ) ) \r 0051140 ( c l : s e t f ( c o n 0051160 d i t i o n - r e p o r t e r 0051200 ' , n a m e ) \r 0051220 , ( a n 0051240 d r e p o r t e r ` ( f u n 0051260 c t i o n , r e p o r t e r ) 0051300 ) ) \r 0051320 ' , n a m e ) ) ) ) \r \r ( d e f 0051340 m a c r o 006 002 c l : c h e c k 0051360 - t y p e 006 001 ( p l a c e t 0051400 y p e s p e c & o p t i o n a 0051420 l s t r i n g ) \r ( w i 0051440 t h - e r r - l o o p - v a r s 0051460 " C H E C K - T Y P E " ` ( 0051500 c l : b l o c k , b l o c k - 0051520 n a m e \r 0051540 * 0051600 ( c l : t a g b o d y , a g 0051620 a i n \r 0051640 * 0051700 ( l e t ( ( , v 0051720 a l , p l a c e ) ) \r 0051740 * 0052020 ( c l : w h e n ( t y 0052040 p e p , v a l ' , t y p e s 0052060 p e c ) \r 0052100 * 0052160 ( c l : r e t u r n - f 0052200 r o m , b l o c k - n a m e ) 0052220 ) \r 0052240 * 0052300 ( c l : s e 0052320 t f , p l a c e ( c h e c k 0052340 - t y p e - f a i l \r 0052360 * 0052460 t \r 0052500 * 0052560 ' 0052600 , p l a c e \r 0052620 * 0052720 , v a l \r 0052740 * 0053020 ' , 0053040 t y p e s p e c \r 0053060 * 0053160 , s t r i n g ) ) \r 0053200 * 0053260 ( g o , a g a i n ) ) 0053300 ) ) ) ) \r \r ( d e f m a c r o 0053320 006 002 c l : e t y p e c a s e 006 001 0053340 ( k e y f o r m & b o d y 0053360 c l a u s e s ) \r ( w i t 0053400 h - g e n s y m s ( v a l u e 0053420 ) \r " E T Y 0053440 P E C A S E " \r 0053460 ( l e t ( ( c a s e - s e 0053500 l e c t o r s ( c o n s ' o 0053520 r ( c o l l e c t - c a s e - 0053540 s e l e c t o r s c l a u s e 0053560 s ' c l : e t y p e c a s e ) 0053600 ) ) ) \r 0053620 ` ( l e t ( ( , v a l u 0053640 e , k e y f o r m ) ) \r 0053660 0053700 ( c l : t y p e c a s e , 0053720 v a l u e , @ c l a u s e s 0053740 ( t ( c h e c k - t y p e - f 0053760 a i l n i l ' , k e y f o r 0054000 m , v a l u e \r 0054020 * 0054100 ' , c a s e - s e l 0054120 e c t o r s n i l ) ) ) ) ) ) 0054140 ) \r \r ( d e f m a c r o 006 002 c 0054160 l : c t y p e c a s e 006 001 ( k 0054200 e y p l a c e & b o d y c l 0054220 a u s e s ) \r ( l e t ( 0054240 ( c a s e - s e l e c t o r s 0054260 ( c o n s ' o r ( c o l l e 0054300 c t - c a s e - s e l e c t o r 0054320 s c l a u s e s ' c l : c t 0054340 y p e c a s e ) ) ) ) \r 0054360 ( w i t h - e r r - l o 0054400 o p - v a r s \r 0054420 " C T Y P E C A S E " \r 0054440 ` ( c l : b l o c k 0054460 , b l o c k - n a m e ( c l 0054500 : t a g b o d y \r 0054520 0054540 , a g a i n 0054560 \r 0054600 0054620 ( l e t ( ( , v a l , k 0054640 e y p l a c e ) ) \r 0054660 * 0054720 ( c l : r e t u r n - f r o m 0054740 , b l o c k - n a m e \r 0054760 * 0055020 ( c l : t y p 0055040 e c a s e , v a l , @ c l a 0055060 u s e s \r 0055100 * 0055140 ( t ( c l : 0055160 s e t f , k e y p l a c e ( 0055200 c h e c k - t y p e - f a i l \r 0055220 * 0055320 t \r 0055340 * 0055440 ' , k e y p l a 0055460 c e \r 0055500 * 0055560 , v 0055600 a l \r 0055620 * 0055700 ' , 0055720 c a s e - s e l e c t o r s n 0055740 i l ) ) \r 0055760 * 0056020 ( g o 0056040 , a g a i n ) ) ) ) ) ) ) ) ) ) 0056060 \r \r ( d e f m a c r o 006 002 c l 0056100 : e c a s e 006 001 ( k e y f o r 0056120 m & r e s t c l a u s e s ) 0056140 \r ( w i t h - g e n s y m 0056160 s ( v a l u e ) \r 0056200 " E C A S E " \r 0056220 ( l e t ( ( c a s 0056240 e - s e l e c t o r s ( c o l 0056260 l e c t - c a s e - s e l e c t 0056300 o r s c l a u s e s ' c l : 0056320 e c a s e ) ) ) \r 0056340 ( c l : i f c 0056360 a s e - s e l e c t o r s ` ( 0056400 l e t ( ( , v a l u e , k e 0056420 y f o r m ) ) \r 0056440 * 0056500 ( c a s e , v a l u e 0056520 , @ c l a u s e s ( t ( e c 0056540 a s e - f a i l n i l \r 0056560 * 0056660 ' , k e y f o 0056700 r m \r 0056720 * 0057000 , 0057020 v a l u e \r 0057040 * 0057140 ' , c a s e - s e l e c t o 0057160 r s ) ) ) ) \r 0057200 ( c l 0057220 : e r r o r " E m p t y c a 0057240 s e s t a t e m e n t . " ) ) 0057260 ) ) ) \r \r ( d e f m a c r o 006 0057300 002 c l : c c a s e 006 001 ( k e y 0057320 f o r m & b o d y c l a u s 0057340 e s ) \r ( l e t ( ( c a 0057360 s e - s e l e c t o r s ( c o 0057400 l l e c t - c a s e - s e l e c 0057420 t o r s c l a u s e s ' c l 0057440 : c c a s e ) ) ) \r 0057460 ( c l : u n l e s s c a s 0057500 e - s e l e c t o r s ( c l : 0057520 e r r o r " E m p t y C C A 0057540 S E . " ) ) \r ( 0057560 w i t h - e r r - l o o p - v a 0057600 r s \r " C C A 0057620 S E " \r ` ( c 0057640 l : b l o c k , b l o c k - n 0057660 a m e ( c l : t a g b o d y \r 0057700 * 0057740 , a g a i n \r 0057760 0060000 ( l e t ( ( 0060020 , v a l , k e y f o r m ) ) \r 0060040 * 0060100 ( c l : r e t u r n 0060120 - f r o m , b l o c k - n a m 0060140 e \r 0060160 0060200 ( 0060220 c a s e , v a l , @ c l a u 0060240 s e s \r 0060260 * 0060320 ( t ( c l : s e 0060340 t f , k e y f o r m ( e c a 0060360 s e - f a i l \r 0060400 * 0060500 t \r 0060520 * 0060600 ' , k e 0060620 y f o r m \r 0060640 * 0060720 , 0060740 v a l \r 0060760 * 0061040 ' , c 0061060 a s e - s e l e c t o r s ) ) \r 0061100 * 0061160 ( g o , a g a i n 0061200 ) ) ) ) ) ) ) ) ) ) \r \r ( d e f 0061220 m a c r o 006 002 c l : a s s e r 0061240 t 006 001 ( t e s t - f o r m & 0061260 o p t i o n a l p l a c e s 0061300 s t r i n g & r e s t a r g 0061320 s ) \r ( c l : u n l e s s 0061340 ( c l : l i s t p p l a c e 0061360 s ) \r ( c l 0061400 : e r r o r " ~ S s h o u l 0061420 d b e a l i s t o f p 0061440 l a c e s . " p l a c e s ) ) 0061460 \r ( w i t h - e r r - l o 0061500 o p - v a r s " A S S E R T " 0061520 ` ( c l : b l o c k , b l o 0061540 c k - n a m e ( c l : t a g b 0061560 o d y , a g a i n ( c l : w 0061600 h e n \r 0061620 * 0061700 , 0061720 t e s t - f o r m \r 0061740 * 0062040 ( c l : r e t u r n - 0062060 f r o m \r 0062100 * 0062200 , b l o c k - n a m e \r 0062220 * 0062320 ( c l : v a l 0062340 u e s ) ) ) \r 0062360 * 0062440 ( a s s e r t - f a i 0062460 l , s t r i n g , @ a r g s 0062500 ) \r 0062520 * 0062600 ( g o , a g a i n ) ) ) ) ) \r 0062620 \r ( d e f m a c r o 006 002 h a n 0062640 d l e r - b i n d 006 001 ( b i n 0062660 d i n g s & r e s t f o r m 0062700 s ) " E v a l f o r m s u 0062720 n d e r t e m p o r a r y n 0062740 e w c o n d i t i o n h a n 0062760 d l e r s . " \r ` ( l e t 0063000 ( ( * c o n d i t i o n - h a 0063020 n d l e r - b i n d i n g s * 0063040 ( l i s t * , @ ( e x t r a c 0063060 t - c o n d i t i o n - b i n d 0063100 i n g s ( \r 0063120 * 0063220 n o r m a l i z e - c o n d i 0063240 t i o n - c l a u s e s \r 0063260 * 0063360 b i n d i 0063400 n g s ) ) \r 0063420 * 0063460 * c o n d i t i o n 0063500 - h a n d l e r - b i n d i n g 0063520 s * ) ) ) \r , 0063540 @ f o r m s ) ) \r \r ( d e f m a 0063560 c r o 006 002 c o n d i t i o n - 0063600 b i n d 006 001 ( b i n d i n g s 0063620 & r e s t f o r m s ) \r 0063640 0063660 " E v a l f o r 0063700 m s u n d e r t e m p o r a 0063720 r y n e w c o n d i t i o n 0063740 h a n d l e r s ; s y n o n 0063760 y m f o r H A N D L E R - B 0064000 I N D " \r ` ( h a n d l e 0064020 r - b i n d , b i n d i n g s 0064040 , @ f o r m s ) ) \r \r ( d e f 0064060 m a c r o 006 002 c o n d i t i o 0064100 n - c a s e 006 001 ( f o r m & 0064120 r e s t b i n d i n g s ) \r 0064140 0064160 " E v a l 0064200 f o r m u n d e r c o n d 0064220 i t i o n h a n d l e r s t 0064240 h a t p r o v i d e a l t e 0064260 r n a t e c o n t i n u a t i 0064300 o n s . " \r ( w i t h - g 0064320 e n s y m s \r ( c o n d 0064340 i t i o n c l : v a l u e s 0064360 b n a m e h a n d l e r ) \r 0064400 " C O N D I T I O N - C A 0064420 S E " \r ( l e t \r 0064440 ( ( c l a u s e s ( n o r 0064460 m a l i z e - c o n d i t i o n 0064500 - c l a u s e s b i n d i n g 0064520 s ) ) ) \r ( 006 002 | i f 0064540 | 006 001 ( n u l l c l a u s e 0064560 s ) \r 006 002 | t 0064600 h e n | 006 001 f o r m \r 0064620 006 002 | e l s e | 006 001 ` ( 0064640 l e t * ( ( , c o n d i t i o 0064660 n n i l ) \r 0064700 ( , c 0064720 l : v a l u e s ( c o n d i t 0064740 i o n - b l o c k \r 0064760 0065000 , b n 0065020 a m e \r 0065040 0065060 ( l e t ( ( , h 0065100 a n d l e r ( f u n c t i o n 0065120 ( c l : l a m b d a ( c ) \r 0065140 * 0065240 ( c l : s e t f , c o 0065260 n d i t i o n c ) \r 0065300 * 0065360 ( 0065400 c o n d i t i o n - r e t u r n 0065420 , b n a m e ) ) ) ) ) \r 0065440 * 0065500 ( h a n d l e r - b i 0065520 n d ( ( , ( c l : m a p c a r 0065540 ( f u n c t i o n c a r ) \r 0065560 * 0065660 c l a u s e s ) , h a n d l e 0065700 r ) ) \r 0065720 * 0065760 ( c l : m u l t i p l e - 0066000 v a l u e - l i s t , f o r m 0066020 ) ) ) ) ) ) \r 0066040 ( c l : 0066060 i f , c o n d i t i o n , ( 0066100 006 002 | i f | 006 001 ( e q l ( l 0066120 e n g t h c l a u s e s ) \r 0066140 * 0066220 1 ) \r 0066240 * 0066300 006 002 | t h e n | 006 001 ( c a d 0066320 r ( c a r ( m a s s a g e - 0066340 c a t c h - c o n d i t i o n - 0066360 c l a u s e s \r 0066400 * 0066460 c l 0066500 a u s e s c o n d i t i o n ) 0066520 ) ) \r 0066540 0066560 006 002 | 0066600 e l s e | 006 001 ` ( c o n d i t 0066620 i o n - t y p e c a s e , c o 0066640 n d i t i o n \r 0066660 * 0066740 , @ ( m a s s a g e - c a t c 0066760 h - c o n d i t i o n - c l a u 0067000 s e s c l a u s e s \r 0067020 * 0067100 c 0067120 o n d i t i o n ) \r 0067140 * 0067220 ( t ( c l : e r r o r 0067240 \r 0067260 * 0067320 " B u g i n c o n d i 0067340 t i o n - c a s e ! ~ & U n e x 0067360 p e c t e d c o n d i t i o n 0067400 : ~ S . " \r 0067420 * 0067500 , c o n d i 0067520 t i o n ) ) ) ) ( c l : v a l 0067540 u e s - l i s t \r 0067560 * 0067660 , c l : 0067700 v a l u e s ) ) ) ) ) ) ) \r \r ( 0067720 d e f m a c r o 006 002 r e a l - 0067740 c o n d i t i o n - c a s e 006 001 0067760 ( f o r m & r e s t c a s 0070000 e s ) \r 0070020 0070040 " E v a l f o r m u n d e r 0070060 c o n d i t i o n h a n d l 0070100 e r s t h a t p r o v i d e 0070120 a l t e r n a t e c o n t i 0070140 n u a t i o n s . " \r ( w 0070160 i t h - g e n s y m s \r 0070200 ( o u t e r i n n e r c o n 0070220 d i t i o n d u m m y ) \r 0070240 " C O N D I T I O N - C A S 0070260 E " \r ` ( c l : b l o c 0070300 k \r , o u t e r \r 0070320 ( c l : m u l t i p l 0070340 e - v a l u e - c a l l \r 0070360 ' c l : f u n c a l l \r 0070400 ( c l : b l o c k 0070420 \r , i n n e r \r 0070440 ( h a n d l e r 0070460 - b i n d \r , 0070500 ( 006 002 f o r 006 001 c a s e 006 002 0070520 i n 006 001 c a s e s \r 0070540 006 002 c o l l e c 0070560 t 006 001 \r 0070600 ( d e s t r u c t u r i n g - 0070620 b i n d \r 0070640 ( t y p e s b v l . 0070660 b o d y ) \r 0070700 c a s e \r 0070720 ` ( , t y p e s \r 0070740 0070760 ( f u n c t i o n ( c l : l a 0071000 m b d a \r 0071020 0071040 ( , c o n d i t i o n ) \r 0071060 0071100 ( c l : r e t u 0071120 r n - f r o m \r 0071140 0071160 , i n n e r \r 0071200 0071220 ( c l : v a l u e 0071240 s \r 0071260 ( 0071300 f u n c t i o n ( c l : l a m 0071320 b d a \r 0071340 0071360 , @ ( c 0071400 l : i f b v l ( l i s t b 0071420 v l ) \r 0071440 * 0071500 ` ( ( , d u m m y ) \r 0071520 * 0071600 ( 006 002 d e c l a r e 006 001 0071620 ( i g n o r e , d u m m y ) ) 0071640 ) ) \r 0071660 0071700 , @ b o d 0071720 y ) ) \r 0071740 0071760 , c o n d i t i o n ) ) ) ) ) 0072000 ) ) \r ( c l : 0072020 r e t u r n - f r o m , o u t 0072040 e r , f o r m ) ) ) ) ) ) ) \r 0072060 \r ( d e f m a c r o 006 002 i g n 0072100 o r e - e r r o r s 006 001 ( & b 0072120 o d y f o r m s ) " E v a l 0072140 f o r m s w i t h h a n d 0072160 l e r f o r a n y c o n d 0072200 i t i o n o f t y p e E R 0072220 R O R . " \r ` ( c o n d i 0072240 t i o n - c a s e ( p r o g n 0072260 , @ f o r m s ) \r 0072300 ( e r r o r ( c o n 0072320 d i t i o n ) \r 0072340 n i l ) ) ) 0072360 \r \r ( d e f m a c r o 006 002 p r 0072400 o c e e d - c a s e 006 001 ( f o 0072420 r m & r e s t c l a u s e s 0072440 ) \r 0072460 0072500 " E 0072520 v a l f o r m s , e s t a b 0072540 l i s h i n g a p l a c e 0072560 t o p r o c e e d f r o m 0072600 e r r o r s . " \r ( w i t 0072620 h - g e n s y m s \r ( s 0072640 e l e c t o r c l : v a l u e 0072660 s t a g ) \r " P R O C 0072700 E E D - C A S E " \r ( c 0072720 l : m u l t i p l e - v a l u e 0072740 - b i n d \r ( c a s e 0072760 s b o d i e s ) \r ( 0073000 s p l i t - p r o c e e d - c l 0073020 a u s e s c l a u s e s t a 0073040 g ) \r ( 006 002 | i f | 006 0073060 001 ( n u l l c a s e s ) \r 0073100 006 002 | t h e n | 0073120 006 001 f o r m \r 006 0073140 002 | e l s e | 006 001 ` ( d e s t 0073160 r u c t u r i n g - b i n d ( 0073200 , s e l e c t o r \ \ \ , c 0073220 l : v a l u e s ) \r 0073240 0073260 ( l e t ( ( , t a g ( l i s 0073300 t n i l ) ) ) \r 0073320 0073340 ( c l : c a t c h , t 0073360 a g ( c o n s : n o r m a l 0073400 ( l e t ( ( * p r o c e e d 0073420 - c a s e s * ( l i s t * , 0073440 @ c a s e s \r 0073460 * 0073560 * p 0073600 r o c e e d - c a s e s * \r 0073620 * 0073740 ) ) ) \r 0073760 * 0074040 ( c l : m u l t i p l 0074060 e - v a l u e - l i s t , f o 0074100 r m ) ) ) ) ) \r 0074120 ( c 0074140 l : i f ( e q , s e l e c t 0074160 o r : n o r m a l ) \r 0074200 0074220 ( c l : v a l 0074240 u e s - l i s t , c l : v a l 0074260 u e s ) \r 0074300 0074320 ( c l : a p p l y , ( 006 002 0074340 | i f | 006 001 ( e q l ( l e n 0074360 g t h b o d i e s ) \r 0074400 * 0074440 1 0074460 ) \r 0074500 0074520 006 002 0074540 | t h e n | 006 001 ( c a d r ( 0074560 c a r b o d i e s ) ) \r 0074600 * 0074640 006 002 | e l s e | 006 0074660 001 ` ( c a s e , s e l e c t 0074700 o r , @ b o d i e s ) ) , c 0074720 l : v a l u e s ) ) ) ) ) ) ) \r 0074740 \r ( d e f m a c r o 006 002 r e a 0074760 l - p r o c e e d - c a s e 006 001 0075000 ( f o r m & r e s t c l a 0075020 u s e s ) \r 0075040 * 0075100 " E v a l f o r m s , e 0075120 s t a b l i s h i n g a p l 0075140 a c e t o p r o c e e d f 0075160 r o m e r r o r s . " \r 0075200 ( w i t h - g e n s y m s ( o 0075220 u t e r t a g d u m m y ) \r 0075240 " P R O C E 0075260 E D - C A S E " \r 0075300 ` ( c l : b l o c k , o 0075320 u t e r ( l e t * ( ( , t a 0075340 g ( l i s t n i l ) ) \r 0075360 * 0075420 ( * p r o c e e d - c a s e s 0075440 * ( l i s t * , @ ( m a p c 0075460 a r c l a u s e s \r 0075500 * 0075560 ( 0075600 f u n c t i o n ( c l : l a m 0075620 b d a ( c l a u s e ) \r 0075640 * 0075760 ( \r 0076000 * 0076100 p r o c e e d - c a s e - f r 0076120 o m - c l a u s e \r 0076140 * 0076260 c l a u s e t a g \r 0076300 * 0076420 d u m m y ) ) ) ) \r 0076440 * 0076520 * p r o c e e d 0076540 - c a s e s * ) ) ) \r 0076560 0076600 ( c l 0076620 : m u l t i p l e - v a l u e - 0076640 c a l l ' c l : f u n c a l l 0076660 ( c l : c a t c h , t a g \r 0076700 * 0077000 ( c l 0077020 : r e t u r n - f r o m \r 0077040 * 0077140 , o u t e 0077160 r \r 0077200 * 0077300 , f o r m ) ) ) ) ) ) ) \r \r ( d 0077320 e f d e f i n e r 006 002 d e f i 0077340 n e - p r o c e e d - f u n c t 0077360 i o n 006 001 \r f u n c t i o 0077400 n s \r ( n a m e & r e s 0077420 t t a i l & a u x v a r s 0077440 ) \r ( c l : m u l t i p l 0077460 e - v a l u e - b i n d \r 0077500 ( t e s t r e p o r t a r 0077520 g l i s t ) \r ( p r o c 0077540 e s s - p r o c e e d - k e y w 0077560 o r d s n a m e t a i l ) \r 0077600 ( c l : s e t f v a r 0077620 s ( m a p c a r a r g l i s 0077640 t ( f u n c t i o n ( l a m 0077660 b d a ( x ) \r 0077700 * 0077740 ( c l : i f ( c l 0077760 : s y m b o l p x ) \r 0100000 * 0100060 x \r 0100100 * 0100140 ( c a r x ) ) 0100160 ) ) ) ) \r ( c l : u n l 0100200 e s s t e s t ( c l : s e t 0100220 f t e s t ' t r u e ) ) \r 0100240 ( c l : u n l e s s r e 0100260 p o r t ( c l : s e t f r e 0100300 p o r t ' d e f a u l t - p r 0100320 o c e e d - r e p o r t e r ) ) 0100340 \r ` ( p r o g n , @ ( 0100360 c l : i f ( c l : c o n s p 0100400 t e s t ) \r 0100420 ( l e t 0100440 ( ( t e s t e r ( % s u f f i 0100460 x - s y m b o l n a m e " - 0100500 p r o c e e d - t e s t " ) ) ) 0100520 \r 0100540 ( p r o g 0100560 1 ` ( ( c l : s e t f ( c l 0100600 : s y m b o l - f u n c t i o n 0100620 ' , t e s t e r ) \r 0100640 * 0100700 ( f u n c t i o n , 0100720 t e s t ) ) ) ( s e t q t e 0100740 s t t e s t e r ) ) ) ) \r 0100760 ( c l : s e 0101000 t f ( d e f a u l t - p r o c 0101020 e e d - t e s t ' , n a m e ) 0101040 \r 0101060 ' , t e s t ) \r 0101100 , @ ( c l : i f 0101120 ( c l : c o n s p r e p o r 0101140 t ) \r 0101160 ( l e t ( ( r 0101200 e p o r t e r ( % s u f f i x 0101220 - s y m b o l n a m e " - p 0101240 r o c e e d - r e p o r t e r " 0101260 ) ) ) \r 0101300 ( p 0101320 r o g 1 ` ( ( c l : s e t f 0101340 ( c l : s y m b o l - f u n c t 0101360 i o n ' , r e p o r t e r ) \r 0101400 * 0101440 ( f u n c t 0101460 i o n , r e p o r t ) ) ) ( 0101500 s e t q r e p o r t r e p o 0101520 r t e r ) ) ) ) \r 0101540 ( c l : s e t f ( d 0101560 e f a u l t - p r o c e e d - r 0101600 e p o r t ' , n a m e ) \r 0101620 0101640 ' , r e p o r t ) \r 0101660 ( c l : s e t f 0101700 ( p r o c e e d - a r g - c o l 0101720 l e c t o r ' , n a m e ) \r 0101740 0101760 ( f u n c t i o n ( c l : 0102000 l a m b d a ( & o p t i o n a 0102020 l c o n d i t i o n , @ a r 0102040 g l i s t ) \r 0102060 0102100 ( l i s t 0102120 , @ v a r s ) ) ) ) \r 0102140 ( c l : d e f u 0102160 n ( 006 002 \ \ \ , 006 001 n a m e 0102200 ) ( & o p t i o n a l c o n 0102220 d i t i o n , @ a r g l i s t 0102240 ) ( c o n d i t i o n - c a s 0102260 e \r 0102300 * 0102360 ( i n v o k e - p r o 0102400 c e e d - c a s e \r 0102420 * 0102500 ' , 0102520 n a m e c o n d i t i o n , 0102540 @ v a r s ) \r 0102560 * 0102640 ( b a d - p 0102660 r o c e e d - c a s e n i l 0102700 n i l ) ) ) \r ) ) ) \r \r ( d e f 0102720 m a c r o 006 002 c a t c h - a b 0102740 o r t 006 001 ( p r i n t - f o r 0102760 m & b o d y f o r m s ) ` 0103000 ( p r o c e e d - c a s e ( p 0103020 r o g n , @ f o r m s ) \r 0103040 * 0103120 ( a b o r t ( c o n 0103140 d i t i o n ) \r 0103160 * 0103240 : r e p o r t \r 0103260 * 0103340 , p r i 0103360 n t - f o r m : t e s t t r 0103400 u e ( c l : v a l u e s \r 0103420 * 0103540 n i l c o n d i t i o 0103560 n ) ) \r 0103600 * 0103640 ) ) \r \r \r 0103660 ( p u t p r o p s 006 002 c l - e 0103700 r r o r f i l e t y p e 006 001 0103720 c l : c o m p i l e - f i l e ) 0103740 \r ( d e c l a r e \ : d o n t 0103760 e v a l @ l o a d d o e v a l 0104000 @ c o m p i l e d o n t c o p 0104020 y c o m p i l e r v a r s \r 0104040 \r ( a d d t o v a r 006 002 n l a 0104060 m a 006 001 ) \r \r ( a d d t o v a 0104100 r 006 002 n l a m l 006 001 ) \r \r ( 0104120 a d d t o v a r 006 002 l a m a 006 0104140 001 ) \r ) \r ( p u t p r o p s 0104160 c l - e r r o r c o p y r i g 0104200 h t ( " X e r o x C o r p o 0104220 r a t i o n " 1 9 8 6 ) ) \r ( 0104240 d e c l a r e \ : d o n t c o 0104260 p y \r ( f i l e m a p ( n 0104300 i l ) ) ) \r s t o p \r 0104313