$ od -c -N 50000 [eris]<LispCore>CML>DOC>defstruct-design.tedit!1
0000000 S t r u c t u r e s \r T h i s
0000020 d o c u m e n t a t t e m p t
0000040 s t o i d e n t i f y t h
0000060 e i s s u e s i n v o l v e
0000100 d i n i m p l e m e n t i n
0000120 g C o m m o n L i s p s t
0000140 r u c t u r e s a n d ( s e
0000160 c o n d a r i l y ) s u g g e
0000200 s t p o t e n t i a l s o l
0000220 u t i o n s . \r I s s u e s . \r
0000240 T y p i n g : A n y i n s t
0000260 a n c e o f a s t r u c t
0000300 u r e ( t h a t i s : n a
0000320 m e d a n d d o e s n ' t
0000340 s p e c i f y a : t y p e )
0000360 m u s t r e t u r n t h
0000400 e s t r u c t u r e n a m e
0000420 f r o m t y p e - o f .
0000440 C u r r e n t l y i n I n t
0000460 e r l i s p t h i s i s t
0000500 r u e o n l y o f d a t a
0000520 t y p e s . H o w e v e r
0000540 , t h e r e i s a ( r
0000560 e l a t i v e l y d i f f i c
0000600 u l t t o c h a n g e ) l
0000620 i m i t o f 2 5 5 d a t a
0000640 t y p e s w h i c h i s t
0000660 o o r e s t r i c t i v e l
0000700 i m i t o n t h e n u m b
0000720 e r o f s t r u c t u r e s
0000740 . \r R e p r e s e n t a t i o n
0000760 : A n y r e p r e s e n t
0001000 a t i o n i s s u b j e c t
0001020 t o t h e a b i l i t y
0001040 t o i m p l e m e n t : t y
0001060 p e s p e c i f i c a t i o n
0001100 s ( l e g a l c h o i c e s
0001120 a r e v e c t o r ( s a m
0001140 e a s ( v e c t o r t ) )
0001160 , ( v e c t o r e l e m e n
0001200 t - t y p e ) , a n d l i s
0001220 t ) . N o t e t h a t s
0001240 p e c i f y i n g : t y p e
0001260 " p r e v e n t s t h e s t
0001300 r u c t u r e n a m e f r o
0001320 m b e c o m i n g a v a l
0001340 i d t y p e s p e c i f i e
0001360 r r e c o g n i z a b l e b
0001400 y t y p e p " . S t r u
0001420 c t u r e s w h o s p e c i
0001440 f y a : t y p e c a n n o
0001460 t : i n c l u d e a s t r
0001500 u c t u r e w i t h a d i
0001520 f f e r e n t : t y p e .
0001540 T h i s m e a n s t h a t
0001560 a c c e s s o r s c a n b e
0001600 i n h e r i t e d f r o m
0001620 a s u p e r t y p e ( t h o
0001640 u g h t h e y w o u l d h
0001660 a v e h a d t o b e p a
0001700 r a m e t e r i s e d t o a
0001720 l l o w f o r : i n c l u d
0001740 e s a n d : i n i t i a l -
0001760 o f f s e t s . ) \r W e m u s
0002000 t c o r r e c t l y h a n d
0002020 l e n o t i n l i n e d e c
0002040 l a r a t i o n s . C u r r
0002060 e n t l y , a l l d a t a t
0002100 y p e o p e r a t i o n s a
0002120 r e i n l i n e . \r D e f a u
0002140 l t i n i t i a l i z a t i o
0002160 n f o r m s a r e t o b
0002200 e e v a l u a t e d i n t
0002220 h e l e x i c a l e n v i r
0002240 o n m e n t o f t h e d e
0002260 f s t r u c t . \r C o m
0002300 m o n L o o p s : D o w e
0002320 w a n t t o c o n s i d e r
0002340 t h e f u t u r e i m p o
0002360 r t a t i o n o f C o m m o
0002400 n L o o p s ? I t h i n k
0002420 t h a t w e m a y b e
0002440 a b l e t o s a v e a l
0002460 o t o f w o r k i n t h
0002500 e f u t u r e b y t h i n
0002520 k i n g a b o u t t h i s
0002540 n o w . \r T y p e c h e c k i n
0002560 g : W h e n a s s i g n i n
0002600 g a t y p e d f i e l d
0002620 i t i s o p t i o n a l w
0002640 h e t h e r o r n o t t o
0002660 t y p e c h e c k t h e n
0002700 e w v a l u e ( o r i n i
0002720 t i a l i z a t i o n f o r m
0002740 ) . W h e n a s s i g n i n
0002760 g a n y f i e l d i t i
0003000 s o p t i o n a l w h e t h
0003020 e r o r n o t t o t y p
0003040 e c h e c k t h e r e c o r
0003060 d i n s t a n c e . \r N o n I
0003100 s s u e s . \r A r e t h e r e
0003120 h i d d e n c o m p l e x i
0003140 t i e s a b o u t : c o n c
0003160 - n a m e , : c o n s t r u c
0003200 t o r , ( s l o t - o p t i o
0003220 n ) : r e a d - o n l y [
0003240 j u s t v e r i f y t h a t
0003260 a f i e l d i s w r i t
0003300 a b l e b e f o r e g e n e
0003320 r a t i n g t h e a c c e s
0003340 s o r c o d e ] , : p r e
0003360 d i c a t e , : c o n s t r u
0003400 c t o r ? T h e y s e e m
0003420 m o s t l y s t r a i g h t
0003440 f o r w a r d . \r E n v i r o n
0003460 m e n t I s s u e s : \r P r o
0003500 g r a m m i n g t o o l s s
0003520 u c h a s M a s t e r s c o
0003540 p e s h o u l d u n d e r s
0003560 t a n d C L s t r u c t u r
0003600 e s . T h i s i s n o t
0003620 e n t i r e l y s t r a i g
0003640 h t f o r w a r d , s i n c e
0003660 i t m u s t u n d e r s t
0003700 a n d t h e t r a n s i t i
0003720 v e c l o s u r e o f : i
0003740 n c l u d e . ( e . g . t
0003760 o a n s w e r " . w h o
0004000 u s e s f o o a s a f i
0004020 e l d " i t s h o u l d r
0004040 e c o g n i z e n o t j u s
0004060 t u s e s o f B A Z - F O
0004100 O b u t X - F O O f o r
0004120 a l l X t h a t i n c l u
0004140 d e B A Z ( a n d e v e r
0004160 y t h i n g t h a t i n c l
0004200 u d e s X , e t c . ) \r \r I
0004220 I . S o l u t i o n o v e r
0004240 v i e w ( i s s u e s t o
0004260 p a r t s r e l a t i o n s )
0004300 \r \r T h r e e p o s s i b l e
0004320 w a y s o f d o i n g d
0004340 e f a u l t d e f s t r u c t
0004360 , a s i n ( d e f s t r u
0004400 c t f o o a b c ) . D
0004420 o n ' t j u s t c o u n t
0004440 p r o s & c o n s b e l o
0004460 w : \r \r a ) u s e d a t a t
0004500 y p e s \r \t p r o : a l r e a
0004520 d y i m p l e m e n t e d ,
0004540 s o r t o f \r \t \t e f f i c i
0004560 e n t a c c e s s \r \t \t r i g
0004600 h t s e m a n t i c s ( t y
0004620 p e - o f w o r k s ) \r \t \t i
0004640 t s w h a t I n t e r l i s
0004660 p r e c o r d s t u r n i
0004700 n t o \r \t \t o p p o r t u n i t
0004720 y t o g e t r i d o f
0004740 I n t e r l i s p r e c o r d
0004760 s e v e n t u a l l y \r \t c o
0005000 n : d a t a t y p e s d o n
0005020 ' t : i n c l u d e \r \t \t n o
0005040 t e n o u g h d a t a t y p
0005060 e s \r \t \t C M L ' s i m p l
0005100 e m e n t a t i o n i s i n
0005120 c o m p l e t e . \r \r b ) u s
0005140 e s o m e n e w k i n d
0005160 o f n a m e d v e c t o r s
0005200 \r \t c o n : \r \t \t t y p e - o
0005220 f h a s t o r e c o g n i
0005240 z e n a m e d v e c t o r s
0005260 d i f f e r e n t f r o m
0005300 u n n a m e d \r \t \t r e q u i r
0005320 e s g e t t i n g i n t o
0005340 l l h u n k c o d e e t c .
0005360 n e w h u n k t y p e s
0005400 e t c . \r \t \t d o e s n ' t h
0005420 a n d l e p a c k e d s t r
0005440 u c t u r e s w e l l s i n
0005460 c e h u n k s a r e h o m
0005500 o g e n e o u s \r \r c ) u s e
0005520 s o m e v a r i a t i o n
0005540 o n C o m m o n l o o p s
0005560 s c h e m e \r \t c 1 ) u s e
0005600 c o m m o n l o o p s \r \t \t p
0005620 r o : n e a t , f u t u r e
0005640 d i r e c t i o n \r \t \t c o n
0005660 : h o w m u c h o f C o
0005700 m m o n L o o p s n e e d b
0005720 e i m p o r t e d t o u s
0005740 e i t s D E F S T R U C T .
0005760 \t \r \t c 2 ) u s e j u s t
0006000 s m a l l p i e c e o f c
0006020 o m m o n l o o p s , e . g
0006040 . c o m m o n l o o p s c
0006060 o m p a t i b l e b u t n o
0006100 t t h e r e s t o f t h
0006120 e h a i r \r \r I I I . P a r
0006140 t s o f a b o v e o p t i
0006160 o n s . \r \r a ) \r e x t e n d
0006200 d a t a t y p e s . \r \t 1 .
0006220 D e p e n d e n c i e s . \r
0006240 t o a l l o w : i n c l u d
0006260 e i n d a t a t y p e s w
0006300 e r e q u i r e t h e f o
0006320 l l o w i n g m i c r o c o d
0006340 e c h a n g e : \r D T E S T
0006360 w i l l n o w s u c c e e d
0006400 i f t h e i n s t a n c e
0006420 i s a m e m b e r o f
0006440 a s u b t y p e o f t
0006460 h e s p e c i f i e d d a t
0006500 a t y p e . [ t h i s i s
0006520 a l r e a d y p r e s e n t
0006540 i n \ D T E S T . U F N i
0006560 n < l c > n > ] . \r \r T Y P E
0006600 P ( t h e I n t e r l i s p
0006620 - D o p c o d e ) c a n r
0006640 e m a i n i n i t s c u r
0006660 r e n t u s e , s i n c e
0006700 i t i s o n l y s u i t a
0006720 b l e f o r d a t a t y p e
0006740 s w h o s e n u m b e r c
0006760 a n ' t c h a n g e ( h e
0007000 n c e s m a l l d a t a t y
0007020 p e n u m b e r s ) . H o
0007040 w e v e r , w i t h D A T A
0007060 T Y P E S l i k e S T R E A
0007100 M , t h e c o m p i l e r
0007120 a l r e a d y g e n e r a t e
0007140 s D T E S T ' s i n s t e a
0007160 d o f T Y P E P ' s . W
0007200 h y ? \r \r F i e l d a c c
0007220 e s s o r s w i l l b e f
0007240 u n c a l l ' a b l e o b j e
0007260 c t s s p e c i f i e d i n
0007300 t h e d e f i n i t i o n
0007320 c e l l o f t h e a c c e
0007340 s s o r s . \r [ T h i s
0007360 f i e l d s n e e d t o b
0007400 e w o r k e d o u t e x a
0007420 c t l y w i t h J a n t o
0007440 a g r e e w i t h t h e
0007460 a r r a y c o d e ] \r S u g g
0007500 e s t e d f i e l d s f o r
0007520 a n a c c e s s o r a r e
0007540 \r d a t a t y p e \t 1 2 b i t
0007560 s \r e l e m e n t t y p e \t 2
0007600 b i t s \r { b i t d e s c r
0007620 i p t i o n / w o r d l e
0007640 n g t h } \t 8 b i t s \r w o r
0007660 d o f f s e t \t 8 b i t s \0
0007700 \0 \0 \0 \0 005 \0 004 \0 ( \0 $ \0 $ \0 \0 \0
0007720 \0 \0 \0 \0 \0 002 001 \0 \0 \0 \0 \0 \0 \0 \0 \0
0007740 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0007760 ( \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 001 \0
0010000 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0010020 \0 \0 \0 \0 \0 \0 \0 \0 ( \0 \0 \0 \0 \0 \0 \0
0010040 \0 \0 \0 \0 \0 002 001 \0 \0 \0 \0 \0 \0 \0 \0 \0
0010060 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0010100 ( \0 \0 \0 \0 \0 \0 \0 005 \0 \0 \0 \0 002 004 \0
0010120 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0010140 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 004 \0 \b \0
0010160 024 \0 006 M O D E R N \0 \f \0 \0 \0 \0 \0
0010200 \0 \0 \0 \0 023 \0 005 G A C H A \0 \n \0 \0
0010220 \0 \0 \0 \0 \0 \0 \0 030 \0 \n T I M E S R
0010240 O M A N \0 \f \0 \0 \0 \0 \0 \0 \0 \0 \0 026
0010260 \0 \b T E R M I N A L \0 \f \0 \0 \0 \0
0010300 \0 \0 001 \0 \0 026 \0 \b T E R M I N A L
0010320 \0 \f \0 \0 \0 \0 \0 \0 \0 \0 \0 024 \0 006 M O
0010340 D E R N \0 \f \0 \0 \0 \0 \0 \0 002 \0 \0 024
0010360 \0 006 M O D E R N \0 \f \0 \0 \0 \0 \0 \0
0010400 001 \0 \0 024 \0 006 M O D E R N \0 \f \0 \0
0010420 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 \0 004 \0 \0
0010440 \0 \n \0 \0 \0 \0 006 \0 \0 \0 001 \0 \0 \0 \0 \b
0010460 \0 \0 \0 \0 \0 002 \0 004 \0 \0 \0 215 \0 \0 \0 \0
0010500 \b \0 \0 \0 \0 \0 002 \0 004 \0 \0 \0 006 \0 \0 \0
0010520 \0 006 \0 \0 \0 002 \0 \0 \0 \0 \b \0 \0 \0 \0 \0
0010540 002 \0 004 \0 \0 \0 , \0 \0 \0 \0 \b \0 \0 \0 006
0010560 \0 \0 \0 \0 005 \0 \0 \0 030 \0 \0 \0 \0 \b \0 \0
0010600 \0 006 \0 \0 \0 \0 005 \0 \0 \0 & \0 \0 \0 \0 \b
0010620 \0 \0 \0 \a \0 \0 \0 \0 005 \0 \0 \0 305 \0 \0 \0
0010640 \0 \b \0 \0 \0 \0 \0 002 \0 004 \0 \0 \0 K \0 \0
0010660 \0 \0 \b \0 \0 \0 005 \0 \0 \0 \0 005 \0 \0 \0 #
0010700 \0 \0 \0 \0 \b \0 \0 \0 006 \0 \0 \0 \0 005 \0 \0
0010720 \0 \t \0 \0 \0 \0 \b \0 \0 \0 \v \0 \0 \0 \0 005
0010740 \0 \0 \0 003 \0 \0 \0 \0 \b \0 \0 \0 \b \0 \0 \0
0010760 \0 005 \0 \0 \0 \f \0 \0 \0 \0 004 \0 \0 \0 001 \0
0011000 \0 \0 \0 005 \0 \0 \0 006 \0 \0 \0 \0 \b \0 \0 \0
0011020 004 \0 \0 \0 \0 005 \0 \0 \0 031 \0 \0 \0 \0 \b \0
0011040 \0 \0 006 \0 \0 \0 \0 005 \0 \0 \0 R \0 \0 \0 \0
0011060 \b \0 \0 \0 005 \0 \0 \0 \0 005 \0 \0 \0 036 \0 \0
0011100 \0 \0 \b \0 \0 \0 005 \0 \0 \0 \0 005 \0 \0 \0 \b
0011120 \0 \0 \0 \0 \b \0 \0 \0 \b \0 \0 \0 \0 005 \0 \0
0011140 \0 036 \0 \0 \0 \0 \b \0 \0 \0 \b \0 \0 \0 \0 005
0011160 \0 \0 \0 y \0 \0 \0 \0 \b \0 \0 \0 \b \0 \0 \0
0011200 \0 005 \0 \0 \0 006 \0 \0 \0 \0 \b \0 \0 \0 017 \0
0011220 \0 \0 \0 005 \0 \0 \0 004 \0 \0 \0 \0 \b \0 \0 \0
0011240 \0 \0 002 \0 004 \0 \0 \0 031 \0 \0 \0 \0 \b \0 \0
0011260 \0 \t \0 \0 \0 \0 005 \0 \0 \0 > \0 \0 \0 \0 \b
0011300 \0 \0 \0 001 \0 \0 \0 \0 005 \0 \0 \0 \0 \0 002 \0
0011320 004 \0 \0 \0 a \0 \0 \0 \0 \b \0 \0 \0 001 \0 \0
0011340 \0 \0 005 \0 \0 \0 \0 \0 002 \0 004 \0 \0 \0 250 \0
0011360 \0 \0 \0 \b \0 \0 \0 \0 \0 002 \0 004 \0 \0 \0 214
0011400 \0 \0 \0 \0 \b \0 \0 \0 001 \0 \0 \0 \0 003 \0 \0
0011420 \0 J \0 \0 \0 \0 \b \0 \0 \0 \0 \0 002 \0 004 \0
0011440 \0 \0 \t \0 \0 \0 \0 006 \0 \0 \0 002 \0 \0 \0 \0
0011460 \b \0 \0 \0 \0 \0 002 \0 004 \0 \0 \0 $ \0 \0 \0
0011500 \0 \b \0 \0 \0 032 \0 \0 \0 \0 005 \0 \0 \0 016 \0
0011520 \0 \0 \0 \a \0 \0 \0 226 \0 \0 \0 \0 \b \0 \0 \0
0011540 \0 \0 002 \0 004 \0 \0 \0 022 \0 \0 \0 \0 006 \0 \0
0011560 \0 002 \0 \0 \0 \0 \b \0 \0 \0 \0 \0 002 \0 004 \0
0011600 \0 001 Q \0 \0 \0 \0 \b \0 \0 \0 \0 \0 002 \0 004
0011620 \0 \0 \0 001 \0 \0 \0 \0 \b \0 \0 \0 \0 \0 002 \0
0011640 003 \0 \0 \0 2 \0 \0 \0 \0 006 \0 \0 \0 \0 \0 002
0011660 \0 003 \0 \0 \0 001 \0 \0 \0 \0 \b \0 \0 \0 \0 \0
0011700 002 \0 003 \0 \0 \0 q \0 \0 \0 \0 \b \0 \0 \0 \0
0011720 \0 002 \0 003 \0 \0 \0 001 \0 \0 \0 \0 \b \0 \0 \0
0011740 \0 \0 002 \0 003 \0 \0 \0 021 \0 \0 \0 \0 \b \0 \0
0011760 \0 \0 \0 002 \0 003 \0 \0 \0 # \0 \0 \0 \0 \b \0
0012000 \0 \0 \0 \0 002 \0 003 \0 \0 \0 023 \0 \0 \0 \0 \b
0012020 \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 " \0 \0 \0 \0
0012040 \b \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 ' \0 \0 \0
0012060 \0 \b \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 9 \0 \0
0012100 \0 \0 \b \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 037 \0
0012120 \0 \0 \0 \b \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 030
0012140 \0 \0 \0 \0 \b \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0
0012160 & \0 \0 \0 \0 \b \0 \0 \0 \0 \0 002 \0 003 \0 \0
0012200 \0 001 \0 \0 \0 \0 \b \0 \0 \0 \0 \0 002 \0 003 \0
0012220 \0 \0 & \0 \0 \0 \0 \b \0 \0 \0 \0 \0 002 \0 003
0012240 \0 \0 \0 \a \0 \0 \0 \0 \b \0 \0 \0 \0 \0 002 \0
0012260 003 \0 \0 \0 @ \0 \0 \0 \0 \b \0 \0 \0 \0 \0 002
0012300 \0 003 \0 \0 \0 = \0 \0 \0 \0 \b \0 \0 \0 \0 \0
0012320 002 \0 003 \0 \0 \0 D \0 \0 \0 \0 \b \0 \0 \0 \0
0012340 \0 002 \0 003 \0 \0 \0 001 \0 \0 \0 \0 \b \0 \0 \0
0012360 \0 \0 002 \0 003 \0 \0 \0 - \0 \0 \0 \0 \b \0 \0
0012400 \0 \0 \0 002 \0 003 \0 \0 \0 026 \0 \0 \0 \0 \b \0
0012420 \0 \0 \0 \0 002 \0 003 \0 \0 \0 036 \0 \0 \0 \0 \b
0012440 \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 G \0 \0 \0 \0
0012460 \b \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 e \0 \0 \0
0012500 \0 \b \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 001 \0 \0
0012520 \0 \0 \b \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 035 \0
0012540 \0 \0 \0 \b \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0 001
0012560 \0 \0 \0 \0 \b \0 \0 \0 \0 \0 002 \0 003 \0 \0 \0
0012600 004 \0 \0 \0 \0 \b \0 \0 \0 \0 \0 002 \0 003 \0 \0
0012620 \0 022 \0 \0 \0 \0 \b \0 \0 \0 \0 \0 002 \0 003 \0
0012640 \0 \0 024 \0 \0 \0 \0 \b \0 \0 \0 \0 \0 002 \0 003
0012660 \0 \0 \0 J \0 \0 \0 \0 \b \0 \0 \0 \0 \0 002 \0
0012700 003 \0 \0 \0 221 \0 \0 \0 \0 001 \0 \0 \0 \0 \0 002
0012720 \0 002 \0 \0 \0 001 \0 \0 \0 \0 002 \0 \0 \0 \0 \0
0012740 002 \0 002 \0 \0 001 \n \0 \0 \0 \0 001 \0 \0 \0 \0
0012760 \0 002 \0 002 \0 \0 \0 001 \0 \0 \0 \0 001 \0 \0 \0
0013000 \0 \0 002 \0 002 \0 \0 \0 b \0 \0 \0 \0 001 \0 \0
0013020 \0 \0 \0 002 \0 002 \0 \0 \0 S \0 \0 \0 \0 001 \0
0013040 \0 \0 \0 \0 002 \0 002 \0 \0 \0 % \0 \0 \0 \0 001
0013060 \0 \0 \0 \0 \0 002 \0 001 \0 \0 \0 021 \0 \0 \0 \0
0013100 001 \0 \0 \0 \0 \0 002 \0 001 \0 \0 \0 024 \0 \0 \0
0013120 \0 001 \0 \0 \0 \0 \0 002 \0 001 \0 \0 \0 ' \0 \0
0013140 \0 \0 001 \0 \0 \0 \0 \0 002 \0 001 \0 \0 \0 022 \0
0013160 \0 \0 \0 001 \0 \0 017 277 \0 237 z 272
0013174