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