$ 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