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