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