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