$ od -c -N 50000 [Erinyes]<LispManual>Draft>CHAPCONTROLFNS.TXT!1 0000000 \r 9 . \t C O N D I T I O N A 0000020 L S A N D I T E R A T I V E 0000040 S T A T E M E N T S \r \r \r I 0000060 n o r d e r t o d o a n 0000100 y b u t t h e s i m p l e 0000120 s t c o m p u t a t i o n s , 0000140 i t i s n e c e s s a r y 0000160 t o t e s t v a l u e s 0000200 a n d e x e c u t e e x p r 0000220 e s s i o n s c o n d i t i o 0000240 n a l l y , a n d t o e x 0000260 e c u t e a s e r i e s o 0000300 f e x p r e s s i o n s . 0000320 I n t e r l i s p s u p p l i 0000340 e s a l a r g e n u m b e 0000360 r o f p r e d i c a t e s , 0000400 c o n d i t i o n a l f u n 0000420 c t i o n s , a n d c o n t 0000440 r o l f u n c t i o n s . 0000460 A l s o , t h e r e i s a 0000500 c o m p l e x " i t e r a t 0000520 i v e s t a t e m e n t " f 0000540 a c i l i t y w h i c h a l 0000560 l o w s t h e u s e r t o 0000600 e a s i l y c r e a t e c 0000620 o m p l e x l o o p s a n d 0000640 i t e r a t i v e c o n s t 0000660 r u c t s ( p a g e X . X X 0000700 ) . \r \r 9 . 1 \t D a t a T 0000720 y p e P r e d i c a t e s \r \r 0000740 I n t e r l i s p p r o v i d 0000760 e s s e p a r a t e f u n c 0001000 t i o n s f o r t e s t i n 0001020 g w h e t h e r o b j e c t 0001040 s a r e o f c e r t a i n 0001060 c o m m o n l y - u s e d t 0001100 y p e s : \r ( L I T A T O M X 0001120 ) \t [ F u n c t i o n ] \r R 0001140 e t u r n s T i f X i s 0001160 a l i t a t o m ( s e e 0001200 p a g e X . X X ) N I L o 0001220 t h e r w i s e . N o t e 0001240 t h a t a n u m b e r i s 0001260 n o t a l i t a t o m . 0001300 \r \r ( S M A L L P X ) \t [ 0001320 F u n c t i o n ] \r R e t u r n 0001340 s X i f X i s a s m 0001360 a l l i n t e g e r ; N I L 0001400 o t h e r w i s e . ( N o 0001420 t e t h a t t h e r a n g 0001440 e o f s m a l l i n t e g 0001460 e r s i s i m p l e m e n t 0001500 a t i o n - d e p e n d e n t . 0001520 S e e p a g e X . X X . 0001540 ) \r \r ( F I X P X ) \t [ F 0001560 u n c t i o n ] \r R e t u r n s 0001600 X i f X i s a s m a 0001620 l l o r l a r g e i n t e 0001640 g e r ; N I L o t h e r w i 0001660 s e . \r \r ( F L O A T P X ) 0001700 \t [ F u n c t i o n ] \r R e t 0001720 u r n s X i f X i s a 0001740 f l o a t i n g p o i n t 0001760 n u m b e r ; N I L o t h e 0002000 r w i s e . \r \r ( N U M B E R P 0002020 X ) \t [ F u n c t i o n ] 0002040 \r R e t u r n s X i f X 0002060 i s a n u m b e r o f a 0002100 n y t y p e ( F I X P o r 0002120 F L O A T P ) , N I L o t 0002140 h e r w i s e . \r \r ( A T O M 0002160 X ) \t [ F u n c t i o n ] \r 0002200 R e t u r n s T i f X i 0002220 s a n a t o m ( i . e . 0002240 a l i t a t o m o r a n 0002260 u m b e r ) ; N I L o t h e 0002300 r w i s e . \r W a r n i n g : 0002320 ( A T O M X ) i s N I L 0002340 i f X i s a n a r r a 0002360 y , s t r i n g , e t c . 0002400 I n m a n y d i a l e c t 0002420 s o f L i s p , t h e f 0002440 u n c t i o n A T O M i s 0002460 d e f i n e d e q u i v a l e 0002500 n t t o t h e I n t e r l 0002520 i s p f u n c t i o n N L I 0002540 S T P . \r \r ( L I S T P X ) 0002560 \t [ F u n c t i o n ] \r R e t 0002600 u r n s X i f X i s a 0002620 l i s t c e l l , e . g . 0002640 , s o m e t h i n g c r e a 0002660 t e d b y C O N S ; N I L 0002700 o t h e r w i s e . \r \r ( N L 0002720 I S T P X ) \t [ F u n c t 0002740 i o n ] \r ( N O T ( L I S T P 0002760 X ) ) . R e t u r n s T 0003000 i f X i s n o t a l 0003020 i s t c e l l , N I L o t 0003040 h e r w i s e . \r \r ( S T R I N 0003060 G P X ) \t [ F u n c t i o 0003100 n ] \r R e t u r n s X i f 0003120 X i s a s t r i n g , N 0003140 I L o t h e r w i s e . \r \r ( 0003160 A R R A Y P X ) \t [ F u n 0003200 c t i o n ] \r R e t u r n s X 0003220 i f X i s a n a r r a 0003240 y , N I L o t h e r w i s e 0003260 . \r N o t e : I n s o m e 0003300 i m p l e m e n t a t i o n s 0003320 o f I n t e r l i s p ( b 0003340 u t n o t I n t e r l i s p 0003360 - D ) , A R R A Y P m a y 0003400 a l s o r e t u r n X i f 0003420 i t i s o f t y p e C 0003440 C O D E P o r H A R R A Y P 0003460 . \r \r ( H A R R A Y P X ) 0003500 \t [ F u n c t i o n ] \r R e t u 0003520 r n s X i f i t i s a 0003540 h a s h a r r a y o b j e 0003560 c t ; o t h e r w i s e N I 0003600 L . \r N o t e t h a t H A R 0003620 R A Y P r e t u r n s N I L 0003640 i f X i s a l i s t 0003660 w h o s e C A R i s a n 0003700 H A R R A Y P , e v e n t h 0003720 o u g h t h i s i s a c c 0003740 e p t e d b y t h e h a s 0003760 h a r r a y f u n c t i o n 0004000 s . \r \r N o t e : T h e e 0004020 m p t y l i s t , ( ) o r 0004040 N I L , i s c o n s i d e 0004060 r e d t o b e a l i t a 0004100 t o m , r a t h e r t h a n 0004120 a l i s t . T h e r e f 0004140 o r e , ( L I T A T O M N I 0004160 L ) = ( A T O M N I L ) 0004200 = T a n d ( L I S T P N 0004220 I L ) = N I L . C a r e 0004240 s h o u l d b e t a k e n 0004260 w h e n u s i n g t h e s 0004300 e f u n c t i o n s i f t 0004320 h e o b j e c t m a y b e 0004340 t h e e m p t y l i s t 0004360 N I L . \r \r 9 . 2 \t E q u a 0004400 l i t y P r e d i c a t e s \r 0004420 \r A c o m m o n o p e r a t 0004440 i o n w h e n d e a l i n g 0004460 w i t h d a t a o b j e c 0004500 t s i s t o t e s t w h 0004520 e t h e r t w o o b j e c t 0004540 s a r e e q u a l . I n 0004560 s o m e c a s e s , s u c 0004600 h a s w h e n c o m p a r 0004620 i n g t w o s m a l l i n 0004640 t e g e r s , e q u a l i t y 0004660 c a n b e e a s i l y d 0004700 e t e r m i n e d . H o w e 0004720 v e r , s o m e t i m e s t 0004740 h e r e i s m o r e t h a 0004760 n o n e t y p e o f e q 0005000 u a l i t y . F o r i n s 0005020 t a n c e , g i v e n t w o 0005040 l i s t s , o n e c a n 0005060 a s k w h e t h e r t h e y 0005100 a r e e x a c t l y t h e 0005120 s a m e o b j e c t , o r 0005140 w h e t h e r t h e y a r 0005160 e t w o d i s t i n c t l 0005200 i s t s w h i c h c o n t a 0005220 i n t h e s a m e e l e m 0005240 e n t s . C o n f u s i o n 0005260 b e t w e e n t h e s e t 0005300 w o t y p e s o f e q u a 0005320 l i t y i s o f t e n t h 0005340 e s o u r c e o f p r o g 0005360 r a m e r r o r s . I n t 0005400 e r l i s p s u p p l i e s 0005420 a n e x t e n s i v e s e t 0005440 o f f u n c t i o n s f o 0005460 r t e s t i n g e q u a l i 0005500 t y : \r ( E Q X Y ) \t [ 0005520 F u n c t i o n ] \r R e t u r n 0005540 s T i f X a n d Y a 0005560 r e i d e n t i c a l p o i 0005600 n t e r s ; N I L o t h e r 0005620 w i s e . E Q s h o u l d 0005640 n o t b e u s e d t o 0005660 c o m p a r e t w o n u m b 0005700 e r s , u n l e s s t h e y 0005720 a r e s m a l l i n t e g 0005740 e r s ; u s e E Q P i n s 0005760 t e a d . \r \r ( N E Q X Y ) 0006000 \t [ F u n c t i o n ] \r ( N 0006020 O T ( E Q X Y ) ) \r \r ( N 0006040 U L L X ) \t [ F u n c t i 0006060 o n ] \r ( N O T X ) \t [ F 0006100 u n c t i o n ] \r ( E Q X N 0006120 I L ) \r \r ( E Q P X Y ) 0006140 \t [ F u n c t i o n ] \r R e t u 0006160 r n s T i f X a n d Y 0006200 a r e E Q , o r i f X 0006220 a n d Y a r e n u m b e 0006240 r s a n d a r e e q u a l 0006260 i n v a l u e ; N I L o 0006300 t h e r w i s e . F o r m 0006320 o r e d i s c u s s i o n o 0006340 f E Q P a n d o t h e r 0006360 n u m b e r f u n c t i o n s 0006400 , s e e p a g e X . X X . 0006420 \r N o t e : E Q P a l s o 0006440 c a n b e u s e d t o 0006460 c o m p a r e s t a c k p o 0006500 i n t e r s ( p a g e X . X 0006520 X ) a n d c o m p i l e d 0006540 c o d e ( p a g e X . X X ) 0006560 . \r \r ( E Q U A L X Y ) 0006600 \t [ F u n c t i o n ] \r E Q U A 0006620 L r e t u r n s T i f X 0006640 a n d Y a r e ( 1 ) E 0006660 Q ; o r ( 2 ) E Q P , i 0006700 . e . , n u m b e r s w i t 0006720 h e q u a l v a l u e ; o 0006740 r ( 3 ) S T R E Q U A L , 0006760 i . e . , s t r i n g s c o 0007000 n t a i n i n g t h e s a m 0007020 e s e q u e n c e o f c h 0007040 a r a c t e r s ; o r ( 4 ) 0007060 l i s t s a n d C A R o 0007100 f X i s E Q U A L t o 0007120 C A R o f Y , a n d C D 0007140 R o f X i s E Q U A L 0007160 t o C D R o f Y . E Q 0007200 U A L r e t u r n s N I L 0007220 o t h e r w i s e . N o t e 0007240 t h a t E Q U A L c a n 0007260 b e s i g n i f i c a n t l y 0007300 s l o w e r t h a n E Q . 0007320 \r A l o o s e d e s c r i p 0007340 t i o n o f E Q U A L m i 0007360 g h t b e t o s a y t h 0007400 a t X a n d Y a r e E 0007420 Q U A L i f t h e y p r i 0007440 n t o u t t h e s a m e 0007460 w a y . \r \r ( E Q U A L A L L 0007500 X Y ) \t [ F u n c t i o n 0007520 ] \r L i k e E Q U A L , e x 0007540 c e p t i t d e s c e n d s 0007560 i n t o t h e c o n t e n 0007600 t s o f a r r a y s , h a 0007620 s h a r r a y s , u s e r 0007640 d a t a t y p e s , e t c . 0007660 T w o n o n - E Q a r r 0007700 a y s m a y b e E Q U A L 0007720 A L L i f t h e i r r e s 0007740 p e c t i v e c o m p o n a n 0007760 t s a r e E Q U A L A L L . 0010000 \r \r \r 9 . 3 \t L o g i c a l 0010020 P r e d i c a t e s \r \r ( A N 0010040 D X 1 X 2 . . . X N ) 0010060 \t [ N L a m b d a N o S p r 0010100 e a d F u n c t i o n ] \r T a 0010120 k e s a n i n d e f i n i t 0010140 e n u m b e r o f a r g u 0010160 m e n t s ( i n c l u d i n g 0010200 z e r o ) , t h a t a r e 0010220 e v a l u a t e d i n o r 0010240 d e r . I f a n y a r g 0010260 u m e n t e v a l u a t e s 0010300 t o N I L , A N D i m m e 0010320 d i a t e l y r e t u r n s 0010340 N I L ( w i t h o u t e v a 0010360 l u a t i n g t h e r e m a 0010400 i n i n g a r g u m e n t s ) 0010420 . I f a l l o f t h e 0010440 a r g u m e n t s e v a l u 0010460 a t e t o n o n - N I L , 0010500 t h e v a l u e o f t h e 0010520 l a s t a r g u m e n t i 0010540 s r e t u r n e d . ( A N 0010560 D ) = > T . \r \r ( O R 0010600 X 1 X 2 . . . X N ) \t 0010620 [ N L a m b d a N o S p r e a 0010640 d F u n c t i o n ] \r T a k e 0010660 s a n i n d e f i n i t e 0010700 n u m b e r o f a r g u m e 0010720 n t s ( i n c l u d i n g z 0010740 e r o ) , t h a t a r e e 0010760 v a l u a t e d i n o r d e 0011000 r . I f a n y a r g u m 0011020 e n t i s n o n - N I L , 0011040 t h e v a l u e o f t h a 0011060 t a r g u m e n t i s r e 0011100 t u r n e d b y O R ( w i 0011120 t h o u t e v a l u a t i n g 0011140 t h e r e m a i n i n g a 0011160 r g u m e n t s ) . I f a 0011200 l l o f t h e a r g u m e 0011220 n t s e v a l u a t e t o 0011240 N I L , N I L i s r e t u 0011260 r n e d . ( O R ) = > 0011300 N I L . \r \r A N D a n d O 0011320 R c a n b e u s e d a s 0011340 s i m p l e l o g i c a l 0011360 c o n n e c t i v e s , b u t 0011400 n o t e t h a t t h e y 0011420 m a y n o t e v a l u a t e 0011440 a l l o f t h e i r a r 0011460 g u m e n t s . T h i s m 0011500 a k e s a d i f f e r e n c 0011520 e i f t h e e v a l u a t 0011540 i o n o f s o m e o f t 0011560 h e a r g u m e n t s c a u 0011600 s e s s i d e - e f f e c t s 0011620 . A n o t h e r r e s u l 0011640 t o f t h i s i m p l e m 0011660 e n t a t i o n o f A N D 0011700 a n d O R i s t h a t t 0011720 h e y c a n b e u s e d 0011740 a s s i m p l e c o n d i t 0011760 i o n a l s t a t e m e n t s 0012000 . F o r e x a m p l e : 0012020 ( A N D ( L I S T P X ) ( 0012040 C D R X ) ) r e t u r n s 0012060 t h e v a l u e o f ( C D 0012100 R X ) i f X i s a l 0012120 i s t c e l l , o t h e r w 0012140 i s e i t r e t u r n s N 0012160 I L w i t h o u t e v a l u 0012200 a t i n g ( C D R X ) . 0012220 I n g e n e r a l , t h i s 0012240 u s e o f A N D a n d 0012260 O R s h o u l d b e a v o 0012300 i d e d i n f a v o r o f 0012320 m o r e e x p l i c i t c 0012340 o n d i t i o n a l s t a t e 0012360 m e n t s i n o r d e r t 0012400 o m a k e p r o g r a m s 0012420 m o r e r e a d a b l e . \r \r 0012440 9 . 4 \t T h e C O N D C 0012460 o n d i t i o n a l F u n c t 0012500 i o n \r \r ( C O N D C L A U S 0012520 E 1 C L A U S E 2 . . . C 0012540 L A U S E K ) \t [ N L a m b 0012560 d a N o S p r e a d F u n c 0012600 t i o n ] \r T h e c o n d i t 0012620 i o n a l f u n c t i o n o 0012640 f I n t e r l i s p , C O N 0012660 D , t a k e s a n i n d e 0012700 f i n i t e n u m b e r o f 0012720 a r g u m e n t s , c a l l 0012740 e d c l a u s e s . E a c 0012760 h C L A U S E i i s a l 0013000 i s t o f t h e f o r m 0013020 ( P i C i 1 . . . C i N ) 0013040 , w h e r e P i i s t h 0013060 e p r e d i c a t e , a n d 0013100 C i 1 . . . C i N a r e 0013120 t h e c o n s e q u e n t s 0013140 . T h e o p e r a t i o n 0013160 o f C O N D c a n b e 0013200 p a r a p h r a s e d a s : \r 0013220 I F P 1 T H E N C 1 1 . 0013240 . . C 1 N E L S E I F P 2 0013260 T H E N C 2 1 . . . C 2 0013300 N E L S E I F P 3 . . . \r 0013320 T h e c l a u s e s a r e 0013340 c o n s i d e r e d i n s e 0013360 q u e n c e a s f o l l o w 0013400 s : t h e p r e d i c a t e 0013420 P 1 o f t h e c l a u s 0013440 e C L A U S E i i s e v a 0013460 l u a t e d . I f t h e 0013500 v a l u e o f P 1 i s " 0013520 t r u e " ( n o n - N I L ) , 0013540 t h e c o n s e q u e n t s 0013560 C i 1 . . . C i N a r e 0013600 e v a l u a t e d i n o r 0013620 d e r , a n d t h e v a l 0013640 u e o f t h e C O N D i 0013660 s t h e v a l u e o f C 0013700 i N , t h e l a s t e x p 0013720 r e s s i o n i n t h e c 0013740 l a u s e . I f P 1 i s 0013760 " f a l s e " ( E Q t o 0014000 N I L ) , t h e n t h e r 0014020 e m a i n d e r o f C L A U 0014040 S E i i s i g n o r e d , 0014060 a n d t h e n e x t c l a 0014100 u s e , C L A U S E i + 1 , 0014120 i s c o n s i d e r e d . 0014140 I f n o P i i s t r u e 0014160 f o r a n y c l a u s e , 0014200 t h e v a l u e o f t h 0014220 e C O N D i s N I L . \r N 0014240 o t e : I f a c l a u s 0014260 e h a s n o c o n s e q u 0014300 e n t s , a n d h a s t h 0014320 e f o r m ( P i ) , t h e 0014340 n i f P i e v a l u a t e 0014360 s t o n o n - N I L , i t 0014400 i s r e t u r n e d a s 0014420 t h e v a l u e o f t h e 0014440 C O N D . I t i s o n 0014460 l y e v a l u a t e d o n c 0014500 e . \r E x a m p l e : \r _ ( D 0014520 E F I N E Q ( D O U B L E ( 0014540 X ) \r 0014560 ( C O N D ( ( N U M B E R 0014600 P X ) ( P L U S X X ) ) 0014620 \r 0014640 ( ( S T R I N G P 0014660 X ) ( C O N C A T X X ) ) 0014700 \r 0014720 ( ( A T O M X ) 0014740 ( P A C K * X X ) ) \r 0014760 0015000 ( T ( P R I N T " u n k 0015020 n o w n " ) X ) \r 0015040 ( 0015060 ( H O R R I B L E - E R R O R ) 0015100 ) ] \r ( D O U B L E ) \r _ ( D 0015120 O U B L E 5 ) \r 1 0 \r _ ( D 0015140 O U B L E " F O O " ) \r " F O 0015160 O F O O " \r _ ( D O U B L E 0015200 ' B A R ) \r B A R B A R \r _ ( 0015220 D O U B L E ' ( A B C ) ) 0015240 \r " u n k n o w n " \r ( A B 0015260 C ) \r A f e w p o i n t s 0015300 a b o u t t h i s e x a m p 0015320 l e : N o t i c e t h a t 0015340 5 i s b o t h a n u m 0015360 b e r a n d a n a t o m , 0015400 b u t i t i s " c a u g 0015420 h t " b y t h e N U M B E 0015440 R P c l a u s e b e f o r e 0015460 t h e A T O M c l a u s e 0015500 . A l s o n o t i c e t 0015520 h e p r e d i c a t e T , 0015540 w h i c h i s a l w a y s 0015560 t r u e . T h i s i s t 0015600 h e n o r m a l w a y t o 0015620 i n d i c a t e a C O N D 0015640 c l a u s e w h i c h w i 0015660 l l a l w a y s b e e x e 0015700 c u t e d ( i f n o n e o 0015720 f t h e p r e c e e d i n g 0015740 c l a u s e s a r e t r u 0015760 e ) . ( H O R R I B L E - E 0016000 R R O R ) w i l l n e v e r 0016020 b e e x e c u t e d . \r \r \r 0016040 9 . 5 \t T h e I F S t a 0016060 t e m e n t \r \r T h e I F s 0016100 t a t e m e n t p r o v i d e 0016120 s a w a y o f w a y o 0016140 f s p e c i f y i n g c o n 0016160 d i t i o n a l e x p r e s s 0016200 i o n s t h a t i s m u c 0016220 h e a s i e r a n d r e a 0016240 d a b l e t h a n u s i n g 0016260 t h e C O N D f u n c t i 0016300 o n d i r e c t l y ( p a g 0016320 e X . X X ) . C L I S P 0016340 t r a n s l a t e s e x p r e 0016360 s s i o n s e m p l o y i n g 0016400 I F , T H E N , E L S E I 0016420 F , o r E L S E ( o r t 0016440 h e i r l o w e r c a s e v 0016460 e r s i o n s ) i n t o e q 0016500 u i v a l e n t C O N D e x 0016520 p r e s s i o n s . I n g 0016540 e n e r a l , s t a t e m e n 0016560 t s o f t h e f o r m : \r 0016600 ( i f A A A t h e n B B B 0016620 e l s e i f C C C t h e n 0016640 D D D e l s e E E E ) \r a 0016660 r e t r a n s l a t e d t o 0016700 : \r ( C O N D ( A A A B B B 0016720 ) \r ( C C C D D D 0016740 ) \r ( T E E E ) 0016760 ) \r T h e s e g m e n t b e 0017000 t w e e n I F o r E L S E 0017020 I F a n d t h e n e x t 0017040 T H E N c o r r e s p o n d s 0017060 t o t h e p r e d i c a t 0017100 e o f a C O N D c l a u 0017120 s e , a n d t h e s e g m 0017140 e n t b e t w e e n T H E N 0017160 a n d t h e n e x t E L 0017200 S E o r E L S E I F a s 0017220 t h e c o n s e q u e n t ( s 0017240 ) . E L S E i s t h e 0017260 s a m e a s E L S E I F T 0017300 T H E N . T h e s e w o 0017320 r d s a r e s p e l l i n g 0017340 c o r r e c t e d u s i n g 0017360 t h e s p e l l i n g l i 0017400 s t C L I S P I F W O R D S P 0017420 L S T . L o w e r c a s e 0017440 v e r s i o n s ( i f , t 0017460 h e n , e l s e i f , e l s 0017500 e ) m a y a l s o b e u 0017520 s e d . \r I f t h e r e i s 0017540 n o t h i n g f o l l o w i 0017560 n g a T H E N , o r T H 0017600 E N i s o m i t t e d e n 0017620 t i r e l y , t h e n t h e 0017640 r e s u l t i n g C O N D 0017660 c l a u s e h a s a p r e 0017700 d i c a t e b u t n o c o 0017720 n s e q u e n t . F o r e 0017740 x a m p l e , ( i f X t h 0017760 e n e l s e i f . . . ) a 0020000 n d ( i f X e l s e i f 0020020 . . . ) b o t h t r a n s l 0020040 a t e t o ( C O N D ( X ) 0020060 . . . ) , w h i c h m e a 0020100 n s t h a t i f X i s 0020120 n o t N I L , i t i s r 0020140 e t u r n e d a s t h e v 0020160 a l u e o f t h e C O N D 0020200 . \r N o t e t h a t o n l y 0020220 o n e e x p r e s s i o n 0020240 i s a l l o w e d a s t h 0020260 e p r e d i c a t e , b u t 0020300 m u l t i p l e e x p r e s 0020320 s i o n s a r e a l l o w e 0020340 d a s t h e c o n s e q u 0020360 e n t s a f t e r T H E N 0020400 o r E L S E . M u l t i p 0020420 l e c o n s e q u e n t e x 0020440 p r e s s i o n s a r e i m 0020460 p l i c i t e l y w r a p p e 0020500 d i n a P R O G N , a n 0020520 d t h e v a l u e o f t 0020540 h e l a s t o n e i s r 0020560 e t u r n e d a s t h e v 0020600 a l u e o f t h e c o n s 0020620 e q u e n t . F o r e x a 0020640 m p l e : \r ( i f X t h e n 0020660 ( P R I N T " F O O " ) ( 0020700 P R I N T " B A R " ) e l s 0020720 e i f Y t h e n ( P R I N 0020740 T " B A Z " ) ) \r C L I S P 0020760 c o n s i d e r s I F , T H 0021000 E N , E L S E , a n d E L 0021020 S E I F t o h a v e l o w 0021040 e r p r e c e d e n c e t h 0021060 a n a l l i n f i x a n d 0021100 p r e f i x o p e r a t o r 0021120 s , a s w e l l a s I n 0021140 t e r l i s p f o r m s , s 0021160 o i t i s s o m e t i m e 0021200 s p o s s i b l e t o o m 0021220 i t p a r e n t h e s e s a 0021240 r o u n d p r e d i c a t e 0021260 o r c o n s e q u e n t f o 0021300 r m s . F o r e x a m p l 0021320 e , ( i f F O O X Y t 0021340 h e n . . . ) i s e q u i 0021360 v a l e n t t o ( i f ( F 0021400 O O X Y ) t h e n . . . 0021420 ) , a n d ( i f X t h e 0021440 n F O O X Y e l s e . 0021460 . . ) a s e q u i v a l e n 0021500 t t o ( i f X t h e n 0021520 ( F O O X Y ) e l s e . 0021540 . . ) . E s s e n t i a l l 0021560 y , C L I S P d e t e r m i 0021600 n e s w h e t h e r t h e 0021620 s e g m e n t b e t w e e n 0021640 T H E N a n d t h e n e x 0021660 t E L S E o r E L S E I F 0021700 c o r r e s p o n d s t o 0021720 o n e f o r m o r s e v e 0021740 r a l a n d a c t s a c c 0021760 o r d i n g l y , o c c a s i 0022000 o n a l l y i n t e r a c t i 0022020 n g w i t h t h e u s e r 0022040 t o r e s o l v e a m b i 0022060 g u o u s c a s e s . N o 0022100 t e t h a t i f F O O i 0022120 s b o u n d a s a v a r 0022140 i a b l e , ( i f F O O t 0022160 h e n . . . ) i s t r a n 0022200 s l a t e d a s ( C O N D 0022220 ( F O O . . . ) ) , s o i 0022240 f a c a l l t o t h e 0022260 f u n c t i o n F O O i s 0022300 d e s i r e d , u s e ( i f 0022320 ( F O O ) t h e n . . . ) 0022340 . \r \r 9 . 6 \t S e l e c t i 0022360 o n F u n c t i o n s \r \r ( S 0022400 E L E C T Q X C L A U S E 1 0022420 C L A U S E 2 . . . C L A 0022440 U S E K D E F A U L T ) \t 0022460 [ N L a m b d a N o S p r e a 0022500 d F u n c t i o n ] \r S e l e 0022520 c t s a f o r m o r s e 0022540 q u e n c e o f f o r m s 0022560 b a s e d o n t h e v a l 0022600 u e o f X . E a c h c 0022620 l a u s e C L A U S E i i s 0022640 a l i s t o f t h e f 0022660 o r m ( S i C i 1 . . . 0022700 C i N ) w h e r e S i i s 0022720 t h e s e l e c t i o n k 0022740 e y . T h e o p e r a t i 0022760 o n o f S E L E C T Q c a 0023000 n b e p a r a p h r a s e d 0023020 a s : \r I F X = S 1 T 0023040 H E N C 1 1 . . . C 1 N 0023060 E L S E I F X = S 2 T H 0023100 E N . . . E L S E D E F A 0023120 U L T . \r I f S i i s a n 0023140 a t o m , t h e v a l u e 0023160 o f X i s t e s t e d 0023200 t o s e e i f i t i s 0023220 E Q t o S i ( w h i c h 0023240 i s n o t e v a l u a t e d 0023260 ) . I f s o , t h e e 0023300 x p r e s s i o n s C i 1 . 0023320 . . C i N a r e e v a l u 0023340 a t e d i n s e q u e n c e 0023360 , a n d t h e v a l u e 0023400 o f t h e S E L E C T Q i 0023420 s t h e v a l u e o f t 0023440 h e l a s t e x p r e s s i 0023460 o n e v a l u a t e d , i . 0023500 e . , C i N . \r I f S i i 0023520 s a l i s t , t h e v a 0023540 l u e o f X i s c o m p 0023560 a r e d w i t h e a c h e 0023600 l e m e n t ( n o t e v a l 0023620 u a t e d ) o f S i , a n 0023640 d i f X i s E Q t o 0023660 a n y o n e o f t h e m , 0023700 t h e n C i 1 . . . C i 0023720 N a r e e v a l u a t e d 0023740 a s a b o v e . \r I f C L A 0023760 U S E i i s n o t s e l e 0024000 c t e d i n o n e o f t 0024020 h e t w o w a y s d e s c 0024040 r i b e d , C L A U S E i + 1 0024060 i s t e s t e d , e t c . 0024100 , u n t i l a l l t h e 0024120 c l a u s e s h a v e b e e 0024140 n t e s t e d . I f n o 0024160 n e i s s e l e c t e d , 0024200 D E F A U L T i s e v a l u 0024220 a t e d , a n d i t s v a 0024240 l u e i s r e t u r n e d 0024260 a s t h e v a l u e o f 0024300 t h e S E L E C T Q . D E 0024320 F A U L T m u s t b e p r 0024340 e s e n t . \r A n e x a m p l 0024360 e o f t h e f o r m o f 0024400 a S E L E C T Q i s : \r [ 0024420 S E L E C T Q M O N T H \r 0024440 ( F E B R U A R Y ( i f ( 0024460 L E A P Y E A R P ) t h e n 0024500 2 9 e l s e 2 8 ) ) \r 0024520 ( ( A P R I L J U N E S E P 0024540 T E M B E R N O V E M B E R ) 0024560 3 0 ) \r 3 1 ] \r I f t 0024600 h e v a l u e o f M O N T 0024620 H i s t h e l i t a t o m 0024640 F E B R U A R Y , t h e S 0024660 E L E C T Q r e t u r n s 2 0024700 8 o r 2 9 ( d e p e n d i 0024720 n g o n ( L E A P Y E A R P 0024740 ) ) ; o t h e r w i s e i 0024760 f M O N T H i s A P R I L 0025000 , J U N E , S E P T E M B E 0025020 R , o r N O V E M B E R , 0025040 t h e S E L E C T Q r e t u 0025060 r n s 3 0 ; o t h e r w i 0025100 s e i t r e t u r n s 3 1 0025120 . \r S E L E C T Q c o m p i l 0025140 e s o p e n , a n d i s 0025160 t h e r e f o r e v e r y f 0025200 a s t ; h o w e v e r , i t 0025220 w i l l n o t w o r k i 0025240 f t h e v a l u e o f X 0025260 i s a l i s t , a l a 0025300 r g e i n t e g e r , o r 0025320 f l o a t i n g p o i n t n 0025340 u m b e r , s i n c e S E L 0025360 E C T Q u s e s E Q f o r 0025400 a l l c o m p a r i s o n s 0025420 . \r \r N o t e : S E L C H A 0025440 R Q ( p a g e X . X X ) i 0025460 s a v e r s i o n o f S 0025500 E L E C T Q t h a t r e c o 0025520 g n i z e s C H A R C O D E 0025540 l i t a t o m s . \r ( S E L E C 0025560 T C X C L A U S E 1 C L A 0025600 U S E 2 . . . C L A U S E K 0025620 D E F A U L T ) \t [ N L a 0025640 m b d a N o S p r e a d F u 0025660 n c t i o n ] \r " S E L E C T Q 0025700 - o n - C o n s t a n t . " 0025720 S i m i l a r t o S E L E C 0025740 T Q e x c e p t t h a t t 0025760 h e s e l e c t i o n k e y 0026000 s a r e e v a l u a t e d , 0026020 a n d t h e r e s u l t 0026040 u s e d a s a S E L E C T 0026060 Q - s t y l e s e l e c t i o 0026100 n k e y . \r S E L E C T C i 0026120 s c o m p i l e d a s a 0026140 S E L E C T Q , w i t h t h 0026160 e s e l e c t i o n k e y s 0026200 e v a l u a t e d a t c o 0026220 m p i l e - t i m e . T h e 0026240 r e f o r e , t h e s e l e 0026260 c t i o n k e y s a c t l 0026300 i k e c o m p i l e - t i m e 0026320 c o n s t a n t s ( s e e 0026340 p a g e X . X X ) . F o r 0026360 e x a m p l e : \r [ S E L E C 0026400 T C N U M \r ( ( f o r 0026420 X f r o m 1 t o 9 c 0026440 o l l e c t ( T I M E S X 0026460 X ) ) " S Q U A R E " ) \r 0026500 " H I P " ] \r c o m p i l e 0026520 s a s : \r [ S E L E C T Q N 0026540 U M \r ( ( 1 4 9 1 0026560 6 2 5 3 6 4 9 6 4 8 1 0026600 ) " S Q U A R E " ) \r 0026620 " H I P " ] \r \r \r 9 . 7 \t P 0026640 R O G a n d A s s o c i a t 0026660 e d C o n t r o l F u n c t 0026700 i o n s \r \r ( P R O G 1 X 1 0026720 X 2 . . . X N ) \t [ N L 0026740 a m b d a N o S p r e a d F 0026760 u n c t i o n ] \r E v a l u a t 0027000 e s i t s a r g u m e n t s 0027020 i n o r d e r , a n d r 0027040 e t u r n s t h e v a l u e 0027060 o f i t s f i r s t a r 0027100 g u m e n t X 1 . F o r 0027120 e x a m p l e , ( P R O G 1 0027140 X ( S E T Q X Y ) ) s e 0027160 t s X t o Y , a n d r 0027200 e t u r n s X ' s o r i g i 0027220 n a l v a l u e . \r \r ( P R O 0027240 G 2 X 1 X 2 . . . X N ) 0027260 \t [ N o S p r e a d F u n 0027300 c t i o n ] \r S i m i l a r t 0027320 o P R O G 1 . E v a l u a 0027340 t e s i t s a r g u m e n t 0027360 s i n o r d e r , a n d 0027400 r e t u r n s t h e v a l u 0027420 e o f i t s s e c o n d 0027440 a r g u m e n t X 2 . \r \r ( P 0027460 R O G N X 1 X 2 . . . X 0027500 N ) \t [ N L a m b d a N o 0027520 S p r e a d F u n c t i o n ] 0027540 \r P R O G N e v a l u a t e s 0027560 e a c h o f i t s a r g 0027600 u m e n t s i n o r d e r , 0027620 a n d r e t u r n s t h e 0027640 v a l u e o f i t s l a 0027660 s t a r g u m e n t . P R 0027700 O G N i s u s e d t o s 0027720 p e c i f y m o r e t h a n 0027740 o n e c o m p u t a t i o n 0027760 w h e r e t h e s y n t a 0030000 x a l l o w s o n l y o n 0030020 e , e . g . , ( S E L E C T 0030040 Q . . . ( P R O G N . . . 0030060 ) ) a l l o w s e v a l u a 0030100 t i o n o f s e v e r a l 0030120 e x p r e s s i o n s a s t 0030140 h e d e f a u l t c o n d i 0030160 t i o n f o r a S E L E C 0030200 T Q . \r \r ( P R O G V A R L S 0030220 T E 1 E 2 . . . E N ) 0030240 \t [ N L a m b d a N o S p r 0030260 e a d F u n c t i o n ] \r T h 0030300 i s f u n c t i o n a l l o 0030320 w s t h e u s e r t o w 0030340 r i t e a n A L G O L - l i 0030360 k e p r o g r a m c o n t a 0030400 i n i n g I n t e r l i s p 0030420 e x p r e s s i o n s ( f o r 0030440 m s ) t o b e e x e c u t 0030460 e d . T h e f i r s t a 0030500 r g u m e n t , V A R L S T , 0030520 i s a l i s t o f l o 0030540 c a l v a r i a b l e s ( m 0030560 u s t b e N I L i f n o 0030600 v a r i a b l e s a r e u 0030620 s e d ) . E a c h a t o m 0030640 i n V A R L S T i s t r 0030660 e a t e d a s t h e n a m 0030700 e o f a l o c a l v a r 0030720 i a b l e a n d b o u n d 0030740 t o N I L . V A R L S T 0030760 c a n a l s o c o n t a i n 0031000 l i s t s o f t h e f 0031020 o r m ( L I T A T O M F O R 0031040 M ) . I n t h i s c a s 0031060 e , L I T A T O M i s t h 0031100 e n a m e o f t h e v a 0031120 r i a b l e a n d i s b o 0031140 u n d t o t h e v a l u e 0031160 o f F O R M . T h e e 0031200 v a l u a t i o n t a k e s 0031220 p l a c e b e f o r e a n y 0031240 o f t h e b i n d i n g s 0031260 a r e p e r f o r m e d , 0031300 e . g . , ( P R O G ( ( X 0031320 Y ) ( Y X ) ) . . . ) w 0031340 i l l b i n d l o c a l v 0031360 a r i a b l e X t o t h e 0031400 v a l u e o f Y ( e v a 0031420 l u a t e d o u t s i d e t 0031440 h e P R O G ) a n d l o c 0031460 a l v a r i a b l e Y t o 0031500 t h e v a l u e o f X 0031520 ( o u t s i d e t h e P R O 0031540 G ) . A n a t t e m p t 0031560 t o u s e a n y t h i n g 0031600 o t h e r t h a n a l i t 0031620 a t o m a s a P R O G v 0031640 a r i a b l e w i l l c a u 0031660 s e a n e r r o r , A R G 0031700 N O T L I T A T O M . A 0031720 n a t t e m p t t o u s e 0031740 N I L o r T a s a P 0031760 R O G v a r i a b l e w i l 0032000 l c a u s e a n e r r o r 0032020 , A T T E M P T T O B I N 0032040 D N I L O R T . \r T h e 0032060 r e s t o f t h e P R O G 0032100 i s a s e q u e n c e o 0032120 f n o n - a t o m i c s t a 0032140 t e m e n t s ( f o r m s ) 0032160 a n d l i t a t o m s ( l a 0032200 b e l s ) . T h e f o r m 0032220 s a r e e v a l u a t e d 0032240 s e q u e n t i a l l y ; t h 0032260 e l a b e l s s e r v e o 0032300 n l y a s m a r k e r s . 0032320 T h e t w o s p e c i a l 0032340 f u n c t i o n s G O a n 0032360 d R E T U R N a l t e r t 0032400 h i s f l o w o f c o n t 0032420 r o l a s d e s c r i b e d 0032440 b e l o w . T h e v a l 0032460 u e o f t h e P R O G i 0032500 s u s u a l l y s p e c i f 0032520 i e d b y t h e f u n c t 0032540 i o n R E T U R N . I f 0032560 n o R E T U R N i s e x e 0032600 c u t e d b e f o r e t h e 0032620 P R O G " f a l l s o f f 0032640 t h e e n d , " t h e v 0032660 a l u e o f t h e P R O G 0032700 i s N I L . \r \r ( G O U ) 0032720 \t [ N L a m b d a N o S p 0032740 r e a d F u n c t i o n ] \r G 0032760 O i s u s e d t o c a u 0033000 s e a t r a n s f e r i n 0033020 a P R O G . ( G O L ) 0033040 w i l l c a u s e t h e 0033060 P R O G t o e v a l u a t e 0033100 f o r m s s t a r t i n g 0033120 a t t h e l a b e l L ( 0033140 G O d o e s n o t e v a l 0033160 u a t e i t s a r g u m e n 0033200 t ) . A G O c a n b e 0033220 u s e d a t a n y l e v 0033240 e l i n a P R O G . I 0033260 f t h e l a b e l i s n 0033300 o t f o u n d , G O w i l 0033320 l s e a r c h h i g h e r 0033340 p r o g s w i t h i n t h e 0033360 s a m e f u n c t i o n , 0033400 e . g . , ( P R O G . . . 0033420 A . . . ( P R O G . . . 0033440 ( G O A ) ) ) . I f t h e 0033460 l a b e l i s n o t f o 0033500 u n d i n t h e f u n c t 0033520 i o n i n w h i c h t h e 0033540 P R O G a p p e a r s , a 0033560 n e r r o r i s g e n e r 0033600 a t e d , U N D E F I N E D 0033620 O R I L L E G A L G O . \r \r 0033640 ( R E T U R N X ) \t [ F u 0033660 n c t i o n ] \r A R E T U R N 0033700 i s t h e n o r m a l e 0033720 x i t f o r a P R O G . 0033740 I t s a r g u m e n t i s 0033760 e v a l u a t e d a n d i s 0034000 i m m e d i a t e l y r e t 0034020 u r n e d t h e v a l u e 0034040 o f t h e P R O G i n w 0034060 h i c h i t a p p e a r s . 0034100 \r \r N o t e : I f a G O 0034120 o r R E T U R N i s e x 0034140 e c u t e d i n a n i n t 0034160 e r p r e t e d f u n c t i o 0034200 n w h i c h i s n o t a 0034220 P R O G , t h e G O o r 0034240 R E T U R N w i l l b e 0034260 e x e c u t e d i n t h e 0034300 l a s t i n t e r p r e t e d 0034320 P R O G e n t e r e d i f 0034340 a n y , o t h e r w i s e 0034360 c a u s e a n e r r o r . \r 0034400 G O o r R E T U R N i n s 0034420 i d e o f a c o m p i l e 0034440 d f u n c t i o n t h a t 0034460 i s n o t a P R O G i s 0034500 n o t a l l o w e d , a n 0034520 d w i l l c a u s e a n 0034540 e r r o r a t c o m p i l e 0034560 t i m e . \r A s a c o r o 0034600 l l a r y , G O o r R E T 0034620 U R N i n a f u n c t i o 0034640 n a l a r g u m e n t , e . 0034660 g . , t o S O R T , w i l 0034700 l n o t w o r k c o m p i 0034720 l e d . A l s o , s i n c 0034740 e N L S E T Q ' s a n d E 0034760 R S E T Q ' s c o m p i l e 0035000 a s s e p a r a t e f u n c 0035020 t i o n s , a G O o r R 0035040 E T U R N c a n n o t b e 0035060 u s e d i n s i d e o f a 0035100 c o m p i l e d N L S E T Q 0035120 o r E R S E T Q i f t h 0035140 e c o r r e s p o n d i n g 0035160 P R O G i s o u t s i d e , 0035200 i . e . , a b o v e , t h 0035220 e N L S E T Q o r E R S E 0035240 T Q . \r ( L E T V A R L S T 0035260 E 1 E 2 . . . E N ) \t 0035300 [ M a c r o ] \r L E T i s e 0035320 s s e n t i a l l y a P R O 0035340 G t h a t c a n ' t c o n 0035360 t a i n G O ' s o r R E T 0035400 U R N ' s , a n d w h o s e 0035420 l a s t f o r m i s t h 0035440 e r e t u r n e d v a l u e 0035460 . \r \r ( L E T * V A R L S T 0035500 E 1 E 2 . . . E N ) \t 0035520 [ M a c r o ] \r ( P R O G * V 0035540 A R L S T E 1 E 2 . . . 0035560 E N ) \t [ M a c r o ] \r L E 0035600 T * a n d P R O G * d i f 0035620 f e r f r o m L E T a n d 0035640 P R O G o n l y i n t h 0035660 a t t h e b i n d i n g o 0035700 f t h e b o u n d v a r i 0035720 a b l e s i s d o n e " s 0035740 e q u e n t i a l l y . " T 0035760 h u s \r ( L E T * ( ( A ( L 0036000 I S T 5 ) ) \r ( B 0036020 ( L I S T A A ) ) ) \r 0036040 ( E Q A ( C A D R B ) ) 0036060 ) \r w o u l d e v a l u a t e 0036100 t o T ; w h e r e a s t 0036120 h e s a m e f o r m w i t 0036140 h L E T m i g h t e v e n 0036160 f i n d A a n u n b o u 0036200 n d v a r i a b l e w h e n 0036220 e v a l u a t i n g ( L I S 0036240 T A A ) . \r \r \r 9 . 8 \t 0036260 T h e I t e r a t i v e S t 0036300 a t e m e n t \r \r T h e i t e 0036320 r a t i v e s t a t e m e n t 0036340 ( i . s . ) i n i t s v 0036360 a r i o u s f o r m s p e r 0036400 m i t s t h e u s e r t o 0036420 s p e c i f y c o m p l i c 0036440 a t e d i t e r a t i v e s 0036460 t a t e m e n t s i n a s 0036500 t r a i g h t f o r w a r d a 0036520 n d v i s i b l e m a n n e 0036540 r . R a t h e r t h a n t 0036560 h e u s e r h a v i n g t 0036600 o p e r f o r m t h e m e 0036620 n t a l t r a n s f o r m a t 0036640 i o n s t o a n e q u i v 0036660 a l e n t I n t e r l i s p 0036700 f o r m u s i n g P R O G , 0036720 M A P C , M A P C A R , e 0036740 t c . , t h e s y s t e m 0036760 d o e s i t f o r h i m . 0037000 T h e g o a l w a s t 0037020 o p r o v i d e a r o b u 0037040 s t a n d t o l e r a n t 0037060 f a c i l i t y w h i c h c 0037100 o u l d " m a k e s e n s e 0037120 " o u t o f a w i d e 0037140 c l a s s o f i t e r a t i 0037160 v e s t a t e m e n t s . 0037200 A c c o r d i n g l y , t h e 0037220 u s e r s h o u l d n o t 0037240 f e e l o b l i g e d t o 0037260 r e a d a n d u n d e r s 0037300 t a n d i n d e t a i l t 0037320 h e d e s c r i p t i o n o 0037340 f e a c h o p e r a t o r 0037360 g i v e n b e l o w i n o 0037400 r d e r t o u s e i t e r 0037420 a t i v e s t a t e m e n t s 0037440 . \r A n i t e r a t i v e s 0037460 t a t e m e n t i s a f o 0037500 r m c o n s i s t i n g o f 0037520 a n u m b e r o f s p e 0037540 c i a l w o r d s ( k n o w 0037560 n a s i . s . o p e r a t 0037600 o r s o r i . s . o p r s ) 0037620 , f o l l o w e d b y o p 0037640 e r a n d s . M a n y i . 0037660 s . o p r s ( F O R , D O , 0037700 W H I L E , e t c . ) a r 0037720 e s i m i l a r t o i t e 0037740 r a t i v e s t a t e m e n t 0037760 s i n o t h e r p r o g r 0040000 a m m i n g l a n g u a g e s 0040020 ; o t h e r i . s . o p r 0040040 s ( C O L L E C T , J O I N 0040060 , I N , e t c . ) s p e c 0040100 i f y u s e f u l o p e r a 0040120 t i o n s i n a L i s p 0040140 e n v i r o n m e n t . L o 0040160 w e r c a s e v e r s i o n 0040200 s o f i . s . o p r s ( d 0040220 o , c o l l e c t , e t c . 0040240 ) c a n a l s o b e u s 0040260 e d . H e r e a r e s o 0040300 m e e x a m p l e s o f i 0040320 t e r a t i v e s t a t e m e 0040340 n t s : \r _ ( f o r X f r 0040360 o m 1 t o 5 d o ( P R 0040400 I N T ' F O O ) ) \r F O O \r F 0040420 O O \r F O O \r F O O \r F O O \r N 0040440 I L \r _ ( f o r X f r o m 0040460 2 t o 1 0 b y 2 c o 0040500 l l e c t ( T I M E S X X 0040520 ) ) \r ( 4 1 6 3 6 6 4 1 0040540 0 0 ) \r _ ( f o r X i n 0040560 ' ( A B 1 C 6 . 5 N I 0040600 L ( 4 5 ) ) c o u n t ( N 0040620 U M B E R P X ) ) \r 2 \r I t e 0040640 r a t i v e s t a t e m e n t 0040660 s a r e i m p l e m e n t e 0040700 d t h r o u g h C L I S P , 0040720 w h i c h t r a n s l a t e 0040740 s t h e f o r m i n t o 0040760 t h e a p p r o p r i a t e 0041000 P R O G , M A P C A R , e t 0041020 c . I t e r a t i v e s t 0041040 a t e m e n t f o r m s a r 0041060 e t r a n s l a t e d u s i 0041100 n g a l l C L I S P d e c 0041120 l a r a t i o n s i n e f f 0041140 e c t ( s t a n d a r d / f a 0041160 s t / u n d o a b l e / e t c 0041200 . ) ; s e e p a g e X . X 0041220 X . M i s s p e l l e d i 0041240 . s . o p r s a r e r e c o 0041260 g n i z e d a n d c o r r e 0041300 c t e d u s i n g t h e s 0041320 p e l l i n g l i s t C L I 0041340 S P F O R W O R D S P L S T . 0041360 T h e o r d e r o f a p 0041400 p e a r a n c e o f o p e r 0041420 a t o r s i s n e v e r i 0041440 m p o r t a n t ; C L I S P 0041460 s c a n s t h e e n t i r e 0041500 s t a t e m e n t b e f o r 0041520 e i t b e g i n s t o c 0041540 o n s t r u c t t h e e q u 0041560 i v a l e n t I n t e r l i s 0041600 p f o r m . N e w i . s 0041620 . o p r s c a n b e d e f 0041640 i n e d a s d e s c r i b e 0041660 d o n p a g e X . X X . \r 0041700 I f t h e u s e r d e f i 0041720 n e s a f u n c t i o n b 0041740 y t h e s a m e n a m e 0041760 a s a n i . s . o p r ( W 0042000 H I L E , T O , e t c . ) , 0042020 t h e i . s . o p r w i l 0042040 l n o l o n g e r h a v e 0042060 t h e C L I S P i n t e r 0042100 p r e t a t i o n w h e n i 0042120 t a p p e a r s a s C A R 0042140 o f a f o r m , a l t h 0042160 o u g h i t w i l l c o n 0042200 t i n u e t o b e t r e a 0042220 t e d a s a n i . s . o p 0042240 r i f i t a p p e a r s 0042260 i n t h e i n t e r i o r 0042300 o f a n i t e r a t i v e 0042320 s t a t e m e n t . T o a 0042340 l e r t t h e u s e r , a 0042360 w a r n i n g m e s s a g e 0042400 i s p r i n t e d , e . g 0042420 . , ( W H I L E D E F I N E 0042440 D , T H E R E F O R E D I S 0042460 A B L E D I N C L I S P ) . 0042500 \r 9 . 8 . 1 \t I . s . t y p 0042520 e s \r \r T h e f o l l o w i n 0042540 g i . s . o p r s a r e e 0042560 x a m p l e s o f a c e r 0042600 t a i n k i n d o f i t e 0042620 r a t i v e s t a t e m e n t 0042640 o p e r a t o r c a l l e d 0042660 a n i . s . t y p e . T 0042700 h e i . s . t y p e s p e c 0042720 i f i e s w h a t i s t o 0042740 b e d o n e a t e a c h 0042760 i t e r a t i o n . I t s 0043000 o p e r a n d i s c a l l 0043020 e d t h e " b o d y " o f 0043040 t h e i t e r a t i v e s 0043060 t a t e m e n t . E a c h 0043100 i t e r a t i v e s t a t e m 0043120 e n t m u s t h a v e o n 0043140 e a n d o n l y o n e i 0043160 . s . t y p e . \r D O F O R M 0043200 \t [ I . S . O p e r a t o 0043220 r ] \r S p e c i f i e s w h a 0043240 t i s t o b e d o n e 0043260 a t e a c h i t e r a t i o 0043300 n . D O w i t h n o o 0043320 t h e r o p e r a t o r s p 0043340 e c i f i e s a n i n f i n 0043360 i t e l o o p . I f s o 0043400 m e e x p l i c i t o r i 0043420 m p l i c i t t e r m i n a t 0043440 i n g c o n d i t i o n i s 0043460 s p e c i f i e d , t h e 0043500 v a l u e o f t h e i . s 0043520 . i s N I L . T r a n s 0043540 l a t e s t o M A P C o r 0043560 M A P w h e n e v e r p o 0043600 s s i b l e . \r \r C O L L E C T 0043620 F O R M \t [ I . S . O p 0043640 e r a t o r ] \r S p e c i f i e 0043660 s t h a t t h e v a l u e 0043700 o f F O R M a t e a c h 0043720 i t e r a t i o n i s t o 0043740 b e c o l l e c t e d i n 0043760 a l i s t , w h i c h i 0044000 s r e t u r n e d a s t h 0044020 e v a l u e o f t h e i 0044040 . s . w h e n i t t e r m 0044060 i n a t e s . T r a n s l a 0044100 t e s t o M A P C A R , M 0044120 A P L I S T o r S U B S E T 0044140 w h e n e v e r p o s s i b 0044160 l e . \r W h e n C O L L E C T 0044200 t r a n s l a t e s t o a 0044220 P R O G ( e . g . , i f 0044240 U N T I L , W H I L E , e t 0044260 c . a p p e a r i n t h e 0044300 i . s . ) , t h e t r a n 0044320 s l a t i o n e m p l o y s 0044340 a n o p e n T C O N C u s 0044360 i n g t w o p o i n t e r s 0044400 s i m i l a r t o t h a t 0044420 u s e d b y t h e c o m 0044440 p i l e r f o r c o m p i l 0044460 i n g M A P C A R . T o 0044500 d i s a b l e t h i s t r a 0044520 n s l a t i o n , p e r f o r 0044540 m ( C L D I S A B L E ' F C 0044560 O L L E C T ) ( s e e p a g 0044600 e X . X X ) . \r \r J O I N F 0044620 O R M \t [ I . S . O p e r 0044640 a t o r ] \r S i m i l a r t o 0044660 C O L L E C T , e x c e p t 0044700 t h a t t h e v a l u e s 0044720 o f F O R M a t e a c h 0044740 i t e r a t i o n a r e N 0044760 C O N C e d . T r a n s l a 0045000 t e s t o M A P C O N C o 0045020 r M A P C O N w h e n e v e 0045040 r p o s s i b l e . / N C 0045060 O N C , / M A P C O N C , a 0045100 n d / M A P C O N a r e u 0045120 s e d w h e n t h e C L I 0045140 S P d e c l a r a t i o n U 0045160 N D O A B L E i s i n e f 0045200 f e c t . \r \r S U M F O R M 0045220 \t [ I . S . O p e r a t o r 0045240 ] \r S p e c i f i e s t h a t 0045260 t h e v a l u e s o f F 0045300 O R M a t e a c h i t e r 0045320 a t i o n b e a d d e d t 0045340 o g e t h e r a n d r e t u 0045360 r n e d a s t h e v a l u 0045400 e o f t h e i . s . , e 0045420 . g . , ( f o r I f r o m 0045440 1 t o 5 s u m ( T I M 0045460 E S I I ) ) r e t u r n s 0045500 1 + 4 + 9 + 1 6 + 2 5 = 5 0045520 5 . I P L U S , F P L U S 0045540 , o r P L U S w i l l b 0045560 e u s e d i n t h e t r 0045600 a n s l a t i o n d e p e n d 0045620 i n g o n t h e C L I S P 0045640 d e c l a r a t i o n s i n 0045660 e f f e c t . \r \r C O U N T 0045700 F O R M \t [ I . S . O p e 0045720 r a t o r ] \r C o u n t s t h 0045740 e n u m b e r o f t i m e 0045760 s t h a t F O R M i s t 0046000 r u e , a n d r e t u r n s 0046020 t h a t c o u n t a s i 0046040 t s v a l u e . \r \r A L W A Y 0046060 S F O R M \t [ I . S . O 0046100 p e r a t o r ] \r R e t u r n s 0046120 T i f t h e v a l u e 0046140 o f F O R M i s n o n - N 0046160 I L f o r a l l i t e r a 0046200 t i o n s . ( N o t e : r 0046220 e t u r n s N I L a s s o 0046240 o n a s t h e v a l u e 0046260 o f F O R M i s N I L ) . 0046300 \r \r N E V E R F O R M \t [ 0046320 I . S . O p e r a t o r ] \r S 0046340 i m i l a r t o A L W A Y S 0046360 , e x c e p t r e t u r n s 0046400 T i f t h e v a l u e 0046420 o f F O R M i s n e v e r 0046440 t r u e . ( N o t e : r 0046460 e t u r n s N I L a s s o 0046500 o n a s t h e v a l u e 0046520 o f F O R M i s n o n - N 0046540 I L ) . \r \r T h e f o l l o w 0046560 i n g i . s . t y p e s e x 0046600 p l i c i t l y r e f e r t 0046620 o t h e i t e r a t i o n 0046640 v a r i a b l e ( i . v . ) 0046660 o f t h e i t e r a t i v e 0046700 s t a t e m e n t , w h i c 0046720 h i s a v a r i a b l e 0046740 s e t a t e a c h i t e r 0046760 a t i o n . T h i s i s 0047000 e x p l a i n e d b e l o w 0047020 u n d e r F O R . \r T H E R E 0047040 I S F O R M \t [ I . S . 0047060 O p e r a t o r ] \r R e t u r n 0047100 s t h e f i r s t v a l u 0047120 e o f t h e i . v . f o 0047140 r w h i c h F O R M i s 0047160 n o n - N I L , e . g . , ( 0047200 f o r X i n Y t h e r e 0047220 i s ( N U M B E R P X ) ) 0047240 r e t u r n s t h e f i r s 0047260 t n u m b e r i n Y . 0047300 ( N o t e : r e t u r n s t 0047320 h e v a l u e o f t h e 0047340 i . v . a s s o o n a s 0047360 t h e v a l u e o f F O R 0047400 M i s n o n - N I L ) . \r \r 0047420 L A R G E S T F O R M \t [ 0047440 I . S . O p e r a t o r ] \r S 0047460 M A L L E S T F O R M \t [ 0047500 I . S . O p e r a t o r ] \r R 0047520 e t u r n s t h e v a l u e 0047540 o f t h e i . v . t h a 0047560 t p r o v i d e s t h e l 0047600 a r g e s t / s m a l l e s t 0047620 v a l u e o f F O R M . 0047640 $ $ E X T R E M E i s a l w 0047660 a y s b o u n d t o t h e 0047700 c u r r e n t g r e a t e s 0047720 t / s m a l l e s t v a l u e 0047740 , $ $ V A L t o t h e v 0047760 a l u e o f t h e i . v . 0050000 f r o m w h i c h i t c 0050020 a m e . \r \r 9 . 8 . 2 \t I t 0050040 e r a t i o n V a r i a b l e 0050060 I . s . o p r s \r \r F O R V 0050100 A R \t [ I . S . O p e r a 0050120 t o r ] \r S p e c i f i e s t 0050140 h e i t e r a t i o n v a r 0050160 i a b l e ( i . v . ) w h i 0050200 c h i s u s e d i n c o 0050220 n j u n c t i o n w i t h I 0050240 N , O N , F R O M , T O , 0050260 a n d B Y . T h e v a 0050300 r i a b l e i s r e b o u n 0050320 d w i t h i n t h e i . s 0050340 . , s o t h e v a l u e 0050360 o f t h e v a r i a b l e 0050400 o u t s i d e t h e i . s . 0050420 i s n o t e f f e c t e d 0050440 . E x a m p l e : \r _ ( S 0050460 E T Q X 5 5 ) \r 5 5 \r _ ( 0050500 f o r X f r o m 1 t o 0050520 5 c o l l e c t ( T I M E S 0050540 X X ) ) \r ( 1 4 9 1 6 0050560 2 5 ) \r _ X \r 5 5 \r \r F O R 0050600 V A R S \t [ I . S . O p 0050620 e r a t o r ] \r V A R S a l 0050640 i s t o f v a r i a b l e s 0050660 , e . g . , ( f o r ( X 0050700 Y Z ) i n . . . ) . T 0050720 h e f i r s t v a r i a b l 0050740 e i s t h e i . v . , t 0050760 h e r e s t a r e d u m m 0051000 y v a r i a b l e s . S e 0051020 e B I N D b e l o w . \r \r F 0051040 O R O L D V A R \t [ I . 0051060 S . O p e r a t o r ] \r S i m 0051100 i l a r t o F O R , e x c 0051120 e p t t h a t V A R i s 0051140 n o t r e b o u n d w i t h 0051160 i n t h e i . s . , s o 0051200 t h e v a l u e o f t h e 0051220 i . v . o u t s i d e o f 0051240 t h e i . s . i s c h a 0051260 n g e d . E x a m p l e : 0051300 \r _ ( S E T Q X 5 5 ) \r 5 0051320 5 \r _ ( f o r o l d X f 0051340 r o m 1 t o 5 c o l l e 0051360 c t ( T I M E S X X ) ) \r 0051400 ( 1 4 9 1 6 2 5 ) \r _ 0051420 X \r 6 \r \r B I N D V A R \t 0051440 [ I . S . O p e r a t o r ] \r 0051460 B I N D V A R S \t [ I . S 0051500 . O p e r a t o r ] \r U s e d 0051520 t o s p e c i f y d u m m 0051540 y v a r i a b l e s , w h i 0051560 c h a r e b o u n d l o c 0051600 a l l y w i t h i n t h e 0051620 i . s . \r \r N o t e : F O R 0051640 , F O R O L D , a n d B 0051660 I N D v a r i a b l e s c a 0051700 n b e i n i t i a l i z e d 0051720 b y u s i n g t h e f o 0051740 r m V A R _ F O R M : \r ( f o 0051760 r o l d ( X _ F O R M ) b 0052000 i n d ( Y _ F O R M ) . . . 0052020 ) \r I N F O R M \t [ I . S 0052040 . O p e r a t o r ] \r S p e c 0052060 i f i e s t h a t t h e i 0052100 . s . i s t o i t e r a t 0052120 e d o w n a l i s t w i 0052140 t h t h e i . v . b e i n 0052160 g r e s e t t o t h e c 0052200 o r r e s p o n d i n g e l e 0052220 m e n t a t e a c h i t e 0052240 r a t i o n . F o r e x a 0052260 m p l e , ( f o r X i n 0052300 Y d o . . . ) c o r r e s 0052320 p o n d s t o ( M A P C Y 0052340 ( F U N C T I O N ( L A M B 0052360 D A ( X ) . . . ) ) ) . 0052400 I f n o i . v . h a s b 0052420 e e n s p e c i f i e d , a 0052440 d u m m y i s s u p p l i 0052460 e d , e . g . , ( i n Y 0052500 c o l l e c t C A D R ) i s 0052520 e q u i v a l e n t t o ( 0052540 M A P C A R Y ( F U N C T I 0052560 O N C A D R ) ) . \r \r O N F 0052600 O R M \t [ I . S . O p e r 0052620 a t o r ] \r S a m e a s I N 0052640 e x c e p t t h a t t h e 0052660 i . v . i s r e s e t t 0052700 o t h e c o r r e s p o n d 0052720 i n g t a i l a t e a c h 0052740 i t e r a t i o n . T h u 0052760 s I N c o r r e s p o n d s 0053000 t o M A P C , M A P C A R 0053020 , a n d M A P C O N C , w 0053040 h i l e O N c o r r e s p o 0053060 n d s t o M A P , M A P L 0053100 I S T , a n d M A P C O N . 0053120 \r \r N o t e : f o r b o t 0053140 h I N a n d O N , F O R 0053160 M i s e v a l u a t e d b 0053200 e f o r e t h e m a i n p 0053220 a r t o f t h e i . s . 0053240 i s e n t e r e d , i . e . 0053260 o u t s i d e o f t h e 0053300 s c o p e o f a n y o f 0053320 t h e b o u n d v a r i a b 0053340 l e s o f t h e i . s . 0053360 F o r e x a m p l e , ( f 0053400 o r X b i n d ( Y _ ' ( 1 0053420 2 3 ) ) i n Y . . . ) 0053440 w i l l m a p d o w n t 0053460 h e l i s t w h i c h i s 0053500 t h e v a l u e o f Y 0053520 e v a l u a t e d o u t s i d 0053540 e o f t h e i . s . , n 0053560 o t ( 1 2 3 ) . \r I N O 0053600 L D V A R \t [ I . S . O 0053620 p e r a t o r ] \r S p e c i f i 0053640 e s t h a t t h e i . s . 0053660 i s t o i t e r a t e d 0053700 o w n V A R , w i t h V A 0053720 R i t s e l f b e i n g r 0053740 e s e t t o t h e c o r r 0053760 e s p o n d i n g t a i l a 0054000 t e a c h i t e r a t i o n 0054020 , e . g . , a f t e r ( f 0054040 o r X i n o l d L d o 0054060 . . . u n t i l . . . ) 0054100 f i n i s h e s , L w i l l 0054120 b e s o m e t a i l o f 0054140 i t s o r i g i n a l v a 0054160 l u e . \r \r I N O L D ( V A 0054200 R _ F O R M ) \t [ I . S . 0054220 O p e r a t o r ] \r S a m e a 0054240 s I N O L D V A R , e x 0054260 c e p t V A R i s f i r s 0054300 t s e t t o v a l u e o 0054320 f F O R M . \r \r O N O L D 0054340 V A R \t [ I . S . O p e r 0054360 a t o r ] \r S a m e a s I N 0054400 O L D V A R e x c e p t 0054420 t h e i . v . i s r e s e 0054440 t t o t h e c u r r e n t 0054460 v a l u e o f V A R a t 0054500 e a c h i t e r a t i o n , 0054520 i n s t e a d o f t o ( 0054540 C A R V A R ) . \r \r O N O L 0054560 D ( V A R _ F O R M ) \t [ 0054600 I . S . O p e r a t o r ] \r S 0054620 a m e a s O N O L D V A 0054640 R , e x c e p t V A R i s 0054660 f i r s t s e t t o v a 0054700 l u e o f F O R M . \r \r I N 0054720 S I D E F O R M \t [ I . S 0054740 . O p e r a t o r ] \r S i m i 0054760 l a r t o I N , e x c e p 0055000 t t r e a t s f i r s t n 0055020 o n - l i s t , n o n - N I L 0055040 t a i l a s t h e l a s 0055060 t e l e m e n t o f t h e 0055100 i t e r a t i o n , e . g . 0055120 , I N S I D E ' ( A B C 0055140 D . E ) i t e r a t e s 0055160 f i v e t i m e s w i t h 0055200 t h e i . v . s e t t o 0055220 E o n t h e l a s t i 0055240 t e r a t i o n . I N S I D 0055260 E ' A i s e q u i v a l e 0055300 n t t o I N S I D E ' ( A 0055320 ) , w h i c h w i l l i t 0055340 e r a t e o n c e . \r \r F R O 0055360 M F O R M \t [ I . S . O 0055400 p e r a t o r ] \r U s e d t o 0055420 s p e c i f y a n i n i t 0055440 i a l v a l u e f o r a 0055460 n u m e r i c a l i . v . 0055500 T h e i . v . i s a u t o 0055520 m a t i c a l l y i n c r e m 0055540 e n t e d b y 1 a f t e r 0055560 e a c h i t e r a t i o n 0055600 ( u n l e s s B Y i s s p 0055620 e c i f i e d ) . I f n o 0055640 i . v . h a s b e e n s 0055660 p e c i f i e d , a d u m m 0055700 y i . v . i s s u p p l i 0055720 e d a n d i n i t i a l i z 0055740 e d , e . g . , ( f r o m 0055760 2 t o 5 c o l l e c t S 0056000 Q R T ) r e t u r n s ( 1 . 0056020 4 1 4 1 . 7 3 2 2 . 0 2 . 0056040 2 3 6 ) . \r \r T O F O R M 0056060 \t [ I . S . O p e r a t o r ] 0056100 \r U s e d t o s p e c i f y 0056120 t h e f i n a l v a l u e 0056140 f o r a n u m e r i c a l 0056160 i . v . I f F R O M i 0056200 s n o t s p e c i f i e d , 0056220 t h e i . v . i s i n i 0056240 t i a l i z e d t o 1 . 0056260 I f n o i . v . h a s b 0056300 e e n s p e c i f i e d , a 0056320 d u m m y i . v . i s s 0056340 u p p l i e d a n d i n i t 0056360 i a l i z e d . I f B Y 0056400 i s n o t s p e c i f i e d 0056420 , t h e i . v . i s a u 0056440 t o m a t i c a l l y i n c r 0056460 e m e n t e d b y 1 a f t 0056500 e r e a c h i t e r a t i o 0056520 n . W h e n t h e i . v 0056540 . i s d e f i n i t e l y 0056560 b e i n g i n c r e m e n t e 0056600 d , i . e . , e i t h e r 0056620 B Y i s n o t s p e c i f 0056640 i e d , o r i t s o p e r 0056660 a n d i s a p o s i t i v 0056700 e n u m b e r , t h e i . 0056720 s . t e r m i n a t e s w h 0056740 e n t h e i . v . e x c e 0056760 e d s t h e v a l u e o f 0057000 F O R M . S i m i l a r l 0057020 y , w h e n t h e i . v . 0057040 i s d e f i n i t e l y b 0057060 e i n g d e c r e m e n t e d 0057100 t h e i . s . t e r m i n 0057120 a t e s w h e n t h e i . 0057140 v . b e c o m e s l e s s 0057160 t h a n t h e v a l u e o 0057200 f F O R M ( s e e d e s c 0057220 r i p t i o n o f B Y ) . \r 0057240 N o t e : F O R M i s e 0057260 v a l u a t e d o n l y o n 0057300 c e , w h e n t h e i . s 0057320 . i s f i r s t e n t e r 0057340 e d , a n d i t s v a l u 0057360 e b o u n d t o a t e m 0057400 p o r a r y v a r i a b l e 0057420 a g a i n s t w h i c h t h 0057440 e i . v . i s c h e c k e 0057460 d e a c h i n t e r a t i o 0057500 n . I f t h e u s e r 0057520 w i s h e s t o s p e c i f 0057540 y a n i . s . i n w h i 0057560 c h t h e v a l u e o f 0057600 t h e b o u n d a r y c o n 0057620 d i t i o n i s r e c o m p 0057640 u t e d e a c h i t e r a t 0057660 i o n , h e s h o u l d u 0057700 s e W H I L E o r U N T I 0057720 L i n s t e a d o f T O . 0057740 \r \r N o t e : W h e n b o 0057760 t h t h e o p e r a n d s 0060000 t o T O a n d F R O M a 0060020 r e n u m b e r s , a n d 0060040 T O ' s o p e r a n d i s 0060060 l e s s t h a n F R O M ' s 0060100 o p e r a n d , t h e i . 0060120 v . i s d e c r e m e n t e 0060140 d b y 1 a f t e r e a c 0060160 h i t e r a t i o n . I n 0060200 t h i s c a s e , t h e 0060220 i . s . t e r m i n a t e s 0060240 w h e n t h e i . v . b e 0060260 c o m e s l e s s t h a n 0060300 t h e v a l u e o f F O R 0060320 M . F o r e x a m p l e , 0060340 ( f r o m 1 0 t o 1 d 0060360 o P R I N T ) p r i n t s 0060400 t h e n u m b e r s f r o m 0060420 1 0 d o w n t o 1 . \r B 0060440 Y F O R M ( w i t h I N / 0060460 O N ) \t [ I . S . O p e r 0060500 a t o r ] \r I f I N o r O 0060520 N h a v e b e e n s p e c 0060540 i f i e d , t h e v a l u e 0060560 o f F O R M d e t e r m i 0060600 n e s t h e t a i l f o r 0060620 t h e n e x t i t e r a t 0060640 i o n , w h i c h i n t u 0060660 r n d e t e r m i n e s t h 0060700 e v a l u e f o r t h e 0060720 i . v . a s d e s c r i b e 0060740 d e a r l i e r , i . e . , 0060760 t h e n e w i . v . i s 0061000 C A R o f t h e t a i l 0061020 f o r I N , t h e t a i 0061040 l i t s e l f f o r O N . 0061060 I n c o n j u n c t i o n 0061100 w i t h I N , t h e u s 0061120 e r c a n r e f e r t o 0061140 t h e c u r r e n t t a i l 0061160 w i t h i n F O R M b y 0061200 u s i n g t h e i . v . o 0061220 r t h e o p e r a n d f o 0061240 r I N / O N , e . g . , ( 0061260 f o r Z i n L b y ( C 0061300 D D R Z ) . . . ) o r ( 0061320 f o r Z i n L b y ( C 0061340 D D R L ) . . . ) . A t 0061360 t r a n s l a t i o n t i m e 0061400 , t h e n a m e o f t h 0061420 e i n t e r n a l v a r i a 0061440 b l e w h i c h h o l d s 0061460 t h e v a l u e o f t h e 0061500 c u r r e n t t a i l i s 0061520 s u b s t i t u t e d f o r 0061540 t h e i . v . t h r o u g 0061560 h o u t F O R M . F o r e 0061600 x a m p l e , ( f o r X i 0061620 n Y b y ( C D R ( M E M 0061640 B ' F O O ( C D R X ) ) ) 0061660 c o l l e c t X ) s p e c 0061700 i f i e s t h a t a f t e r 0061720 e a c h i t e r a t i o n , 0061740 C D R o f t h e c u r r 0061760 e n t t a i l i s t o b 0062000 e s e a r c h e d f o r t 0062020 h e a t o m F O O , a n d 0062040 ( C D R o f ) t h i s l 0062060 a t t e r t a i l t o b e 0062100 u s e d f o r t h e n e 0062120 x t i t e r a t i o n . \r \r B 0062140 Y F O R M ( w i t h o u t 0062160 I N / O N ) \t [ I . S . O 0062200 p e r a t o r ] \r I f I N o 0062220 r O N h a v e n o t b e 0062240 e n u s e d , B Y s p e c 0062260 i f i e s h o w t h e i . 0062300 v . i t s e l f i s r e s 0062320 e t a t e a c h i t e r a 0062340 t i o n . I f F R O M o 0062360 r T O h a v e b e e n s 0062400 p e c i f i e d , t h e i . 0062420 v . i s k n o w n t o b 0062440 e n u m e r i c a l , s o 0062460 t h e n e w i . v . i s 0062500 c o m p u t e d b y a d d i 0062520 n g t h e v a l u e o f 0062540 F O R M ( w h i c h i s r 0062560 e e v a l u a t e d e a c h 0062600 i t e r a t i o n ) t o t h 0062620 e c u r r e n t v a l u e 0062640 o f t h e i . v . , e . g 0062660 . , ( f o r N f r o m 1 0062700 t o 1 0 b y 2 c o l l 0062720 e c t N ) m a k e s a l 0062740 i s t o f t h e f i r s t 0062760 f i v e o d d n u m b e r 0063000 s . \r I f F O R M i s a 0063020 p o s i t i v e n u m b e r 0063040 ( F O R M i t s e l f , n o 0063060 t i t s v a l u e , w h i 0063100 c h i n g e n e r a l C L 0063120 I S P w o u l d h a v e n 0063140 o w a y o f k n o w i n g 0063160 i n a d v a n c e ) , t h 0063200 e i . s . t e r m i n a t e 0063220 s w h e n t h e v a l u e 0063240 o f t h e i . v . e x c 0063260 e e d s t h e v a l u e o 0063300 f T O ' s o p e r a n d . 0063320 I f F O R M i s a n e 0063340 g a t i v e n u m b e r , t 0063360 h e i . s . t e r m i n a t 0063400 e s w h e n t h e v a l u 0063420 e o f t h e i . v . b e 0063440 c o m e s l e s s t h a n 0063460 T O ' s o p e r a n d , e . 0063500 g . , ( f o r I f r o m 0063520 N t o M b y - 2 u n t 0063540 i l ( L E S S P I M ) . 0063560 . . ) . O t h e r w i s e , 0063600 t h e t e r m i n a t i n g 0063620 c o n d i t i o n f o r e a 0063640 c h i t e r a t i o n d e p 0063660 e n d s o n t h e v a l u 0063700 e o f F O R M f o r t h 0063720 a t i t e r a t i o n : i f 0063740 F O R M < 0 , t h e t e s 0063760 t i s w h e t h e r t h e 0064000 i . v . i s l e s s t h 0064020 a n T O ' s o p e r a n d , 0064040 i f F O R M > 0 t h e t 0064060 e s t i s w h e t h e r t 0064100 h e i . v . e x c e e d s 0064120 T O ' s o p e r a n d , o t 0064140 h e r w i s e i f F O R M = 0064160 0 , t h e i . s . t e r m 0064200 i n a t e s u n c o n d i t i 0064220 o n a l l y . \r I f F R O M 0064240 o r T O h a v e n o t b 0064260 e e n s p e c i f i e d a n 0064300 d F O R M i s n o t a 0064320 n u m b e r , t h e i . v . 0064340 i s s i m p l y r e s e t 0064360 t o t h e v a l u e o f 0064400 F O R M a f t e r e a c h 0064420 i t e r a t i o n , e . g . 0064440 , ( f o r I f r o m N 0064460 b y M . . . ) i s e q u 0064500 i v a l e n t t o ( f o r 0064520 I _ N b y ( P L U S I M 0064540 ) . . . ) . \r \r A S V A R 0064560 \t [ I . S . O p e r a t o r 0064600 ] \r U s e d t o s p e c i f 0064620 y a n i t e r a t i v e s 0064640 t a t e m e n t i n v o l v i 0064660 n g m o r e t h a n o n e 0064700 i t e r a t i v e v a r i a 0064720 b l e , e . g . , ( f o r 0064740 X i n Y a s U i n V 0064760 d o . . . ) c o r r e s p 0065000 o n d s t o M A P 2 C ( p 0065020 a g e X . X X ) . T h e 0065040 i . s . t e r m i n a t e s 0065060 w h e n a n y o f t h e 0065100 t e r m i n a t i n g c o n d 0065120 i t i o n s a r e m e t , 0065140 e . g . , ( f o r X i n 0065160 Y a s I f r o m 1 t o 0065200 1 0 c o l l e c t X ) m 0065220 a k e s a l i s t o f t 0065240 h e f i r s t t e n e l e 0065260 m e n t s o f Y , o r h 0065300 o w e v e r m a n y e l e m 0065320 e n t s t h e r e a r e o 0065340 n Y i f l e s s t h a n 0065360 1 0 . \r T h e o p e r a n d 0065400 t o A S , V A R , s p e 0065420 c i f i e s t h e n e w i 0065440 . v . F o r t h e r e m a 0065460 i n d e r o f t h e i . s 0065500 . , o r u n t i l a n o t 0065520 h e r A S i s e n c o u n 0065540 t e r e d , a l l o p e r a 0065560 t o r s r e f e r t o t h 0065600 e n e w i . v . F o r 0065620 e x a m p l e , ( f o r I 0065640 f r o m 1 t o N 1 a s 0065660 J f r o m 1 t o N 2 b 0065700 y 2 a s K f r o m N 3 0065720 t o 1 b y - 1 . . . ) 0065740 t e r m i n a t e s w h e n 0065760 I e x c e e d s N 1 , o 0066000 r J e x c e e d s N 2 , 0066020 o r K b e c o m e s l e s 0066040 s t h a n 1 . A f t e r 0066060 e a c h i t e r a t i o n , 0066100 I i s i n c r e m e n t e 0066120 d b y 1 , J b y 2 , 0066140 a n d K b y - 1 . \r \r O U 0066160 T O F F O R M \t [ I . S . 0066200 O p e r a t o r ] \r F o r u 0066220 s e w i t h g e n e r a t o 0066240 r s ( p a g e X . X X ) . 0066260 O n e a c h i t e r a t i 0066300 o n , t h e i . v . i s 0066320 s e t t o s u c c e s s i v 0066340 e v a l u e s r e t u r n e 0066360 d b y t h e g e n e r a t 0066400 o r . T h e i . s . t e 0066420 r m i n a t e s w h e n t h 0066440 e g e n e r a t o r r u n s 0066460 o u t . \r \r 9 . 8 . 3 \t C 0066500 o n d i t i o n I . s . o p r 0066520 s \r \r W H E N F O R M \t [ 0066540 I . S . O p e r a t o r ] \r P 0066560 r o v i d e s a w a y o f 0066600 e x c e p t i n g c e r t a 0066620 i n i t e r a t i o n s . 0066640 F o r e x a m p l e , ( f o 0066660 r X i n Y c o l l e c t 0066700 X w h e n ( N U M B E R P 0066720 X ) ) c o l l e c t s o n 0066740 l y t h e e l e m e n t s 0066760 o f Y t h a t a r e n u 0067000 m b e r s . \r \r U N L E S S F 0067020 O R M \t [ I . S . O p e r 0067040 a t o r ] \r S a m e a s W H 0067060 E N e x c e p t f o r t h 0067100 e d i f f e r e n c e i n 0067120 s i g n , i . e . , W H E N 0067140 Z i s t h e s a m e a 0067160 s U N L E S S ( N O T Z ) 0067200 . \r \r W H I L E F O R M \t 0067220 [ I . S . O p e r a t o r ] \r 0067240 P r o v i d e s a w a y o 0067260 f t e r m i n a t i n g t h 0067300 e i . s . W H I L E F O 0067320 R M e v a l u a t e s F O R 0067340 M b e f o r e e a c h i t 0067360 e r a t i o n , a n d i f 0067400 t h e v a l u e i s N I L 0067420 , e x i t s . \r \r U N T I L 0067440 F O R M \t [ I . S . O p e 0067460 r a t o r ] \r S a m e a s W 0067500 H I L E e x c e p t f o r 0067520 d i f f e r e n c e i n s i 0067540 g n , i . e . , W H I L E 0067560 X i s e q u i v a l e n t 0067600 t o U N T I L ( N O T X ) 0067620 . \r \r U N T I L N ( N a 0067640 n u m b e r ) \t [ I . S . 0067660 O p e r a t o r ] \r E q u i v a 0067700 l e n t t o U N T I L I . 0067720 V . > N . \r \r R E P E A T W 0067740 H I L E F O R M \t [ I . S 0067760 . O p e r a t o r ] \r S a m e 0070000 a s W H I L E e x c e p t 0070020 t h e t e s t i s p e r 0070040 f o r m e d a f t e r t h e 0070060 e v a l u t i o n o f t h 0070100 e b o d y , b u t b e f o 0070120 r e t h e i . v . i s r 0070140 e s e t f o r t h e n e x 0070160 t i t e r a t i o n . \r \r R E 0070200 P E A T U N T I L F O R M 0070220 \t [ I . S . O p e r a t o r ] 0070240 \r S a m e a s U N T I L , 0070260 e x c e p t t h e t e s t 0070300 i s p e r f o r m e d a f t 0070320 e r t h e e v a l u a t i o 0070340 n o f t h e b o d y . \r \r 0070360 R E P E A T U N T I L N ( N 0070400 a n u m b e r ) \t [ I . 0070420 S . O p e r a t o r ] \r E q u 0070440 i v a l e n t t o R E P E A 0070460 T U N T I L I . V . > N . 0070500 \r \r 9 . 8 . 4 \t O t h e r 0070520 I . s . o p r s \r \r F I R S T 0070540 F O R M \t [ I . S . O p e 0070560 r a t o r ] \r F O R M i s e 0070600 v a l u a t e d o n c e b e 0070620 f o r e t h e f i r s t i 0070640 t e r a t i o n , e . g . , 0070660 ( f o r X Y Z i n L 0070700 f i r s t ( F O O Y Z ) 0070720 . . . ) , a n d F O O c o 0070740 u l d b e u s e d t o i 0070760 n i t i a l i z e Y a n d 0071000 Z . \r \r F I N A L L Y F O R M 0071020 \t [ I . S . O p e r a t o 0071040 r ] \r F O R M i s e v a l u 0071060 a t e d a f t e r t h e i 0071100 . s . t e r m i n a t e s . 0071120 F o r e x a m p l e , ( f 0071140 o r X i n L b i n d Y 0071160 _ 0 d o ( i f ( A T O M 0071200 X ) t h e n ( S E T Q Y 0071220 ( P L U S Y 1 ) ) ) f i n 0071240 a l l y ( R E T U R N Y ) ) 0071260 w i l l r e t u r n t h e 0071300 n u m b e r o f a t o m s 0071320 i n L . \r \r E A C H T I M E 0071340 F O R M \t [ I . S . O p 0071360 e r a t o r ] \r F O R M i s 0071400 e v a l u a t e d a t t h e 0071420 b e g i n n i n g o f e a 0071440 c h i t e r a t i o n b e f 0071460 o r e , a n d r e g a r d l 0071500 e s s o f , a n y t e s t 0071520 i n g . F o r e x a m p l 0071540 e , c o n s i d e r , \r ( f o 0071560 r I f r o m 1 t o N \r 0071600 d o ( . . . ( F O O 0071620 I ) . . . ) \r u n l 0071640 e s s ( . . . ( F O O I ) 0071660 . . . ) \r u n t i l 0071700 ( . . . ( F O O I ) . . . 0071720 ) ) \r T h e u s e r m i g h 0071740 t w a n t t o s e t a 0071760 t e m p o r a r y v a r i a b 0072000 l e t o t h e v a l u e 0072020 o f ( F O O I ) i n o r 0072040 d e r t o a v o i d c o m 0072060 p u t i n g i t t h r e e 0072100 t i m e s e a c h i t e r a 0072120 t i o n . H o w e v e r , 0072140 w i t h o u t k n o w i n g 0072160 t h e t r a n s l a t i o n , 0072200 h e w o u l d n o t k n 0072220 o w w h e t h e r t o p u 0072240 t t h e a s s i g n m e n t 0072260 i n t h e o p e r a n d 0072300 t o D O , U N L E S S , o 0072320 r U N T I L , i . e . , w 0072340 h i c h o n e w o u l d b 0072360 e e x e c u t e d f i r s t 0072400 . H e c a n a v o i d 0072420 t h i s p r o b l e m b y 0072440 s i m p l y w r i t i n g E 0072460 A C H T I M E ( S E T Q J 0072500 ( F O O I ) ) . \r \r D E C L A 0072520 R E : D E C L \t [ I . S . 0072540 O p e r a t o r ] \r I n s e r 0072560 t s t h e f o r m ( D E C 0072600 L A R E D E C L ) i m m e d 0072620 i a t e l y f o l l o w i n g 0072640 t h e P R O G v a r i a b 0072660 l e l i s t i n t h e t 0072700 r a n s l a t i o n , o r , 0072720 i n t h e c a s e t h a t 0072740 t h e t r a n s l a t i o n 0072760 i s a m a p p i n g f u 0073000 n c t i o n r a t h e r t h 0073020 a n a P R O G , i m m e d 0073040 i a t e l y f o l l o w i n g 0073060 t h e a r g u m e n t l i 0073100 s t o f t h e l a m b d a 0073120 e x p r e s s i o n i n t 0073140 h e t r a n s l a t i o n . 0073160 T h i s c a n b e u s e 0073200 d t o d e c l a r e v a r 0073220 i a b l e s b o u n d i n 0073240 t h e i t e r a t i v e s t 0073260 a t e m e n t t o b e c o 0073300 m p i l e d a s l o c a l 0073320 o r s p e c i a l v a r i a 0073340 b l e s ( s e e p a g e X 0073360 . X X ) . F o r e x a m p 0073400 l e ( f o r X i n Y d 0073420 e c l a r e : ( L O C A L V A 0073440 R S X ) . . . ) . S e v 0073460 e r a l D E C L A R E : s c 0073500 a n a p p p e a r i n t h 0073520 e s a m e i . s . ; t h e 0073540 d e c l a r a t i o n s a r 0073560 e i n s e r t e d i n t h 0073600 e o r d e r t h e y a p p 0073620 e a r . \r \r D E C L A R E D E 0073640 C L \t [ I . S . O p e r a 0073660 t o r ] \r S a m e a s D E C 0073700 L A R E : . \r N o t e t h a t 0073720 s i n c e D E C L A R E i 0073740 s a l s o t h e n a m e 0073760 o f a f u n c t i o n , D 0074000 E C L A R E c a n n o t b e 0074020 u s e d a s a n i . s . 0074040 o p e r a t o r w h e n i 0074060 t a p p e a r s a s C A R 0074100 o f a f o r m , i . e . 0074120 a s t h e f i r s t i . 0074140 s . o p e r a t o r i n a 0074160 n i t e r a t i v e s t a t 0074200 e m e n t . H o w e v e r , 0074220 d e c l a r e ( l o w e r - 0074240 c a s e v e r s i o n ) c a 0074260 n b e t h e f i r s t i 0074300 . s . o p e r a t o r . \r \r O 0074320 R I G I N A L I . S . O P R 0074340 O P E R A N D \t [ I . S . 0074360 O p e r a t o r ] \r I . S . O P 0074400 R w i l l b e t r a n s l 0074420 a t e d u s i n g i t s o 0074440 r i g i n a l , b u i l t - i 0074460 n i n t e r p r e t a t i o n 0074500 , i n d e p e n d e n t o f 0074520 a n y u s e r d e f i n e 0074540 d i . s . o p e r a t o r s 0074560 . S e e p a g e X . X X 0074600 . \r \r T h e r e a r e a l s 0074620 o a n u m b e r o f i . 0074640 s . o p r s t h a t m a k e 0074660 i t e a s i e r t o c r 0074700 e a t e i t e r a t i v e s 0074720 t a t e m e n t s t h a t u 0074740 s e t h e c l o c k , l o 0074760 o p i n g f o r a g i v e 0075000 n p e r i o d o f t i m e 0075020 . S e e t i m e r s , p 0075040 a g e X . X X . \r 9 . 8 . 5 0075060 \t M i s c e l l a n e o u s 0075100 H i n t s o n I . S . O p r 0075120 s \r \r \t 267 \t L o w e r c a s e 0075140 v e r s i o n s o f a l l 0075160 i . s . o p e r a t o r s a 0075200 r e e q u i v a l e n t t o 0075220 t h e u p p e r c a s e , 0075240 e . g . , ( f o r X i n 0075260 Y . . . ) i s e q u i v a 0075300 l e n t t o ( F O R X I 0075320 N Y . . . ) . \r \t 267 \t E a c 0075340 h i . s . o p e r a t o r 0075360 i s o f l o w e r p r e c 0075400 e d e n c e t h a n a l l 0075420 I n t e r l i s p f o r m s , 0075440 s o p a r e n t h e s e s 0075460 a r o u n d t h e o p e r a 0075500 n d s c a n b e o m i t t 0075520 e d , a n d w i l l b e 0075540 s u p p l i e d w h e r e n 0075560 e c e s s a r y , e . g . , 0075600 B I N D ( X Y Z ) c a n 0075620 b e w r i t t e n B I N D 0075640 X Y Z , O L D ( X _ F 0075660 O R M ) a s O L D X _ F O 0075700 R M , W H E N ( N U M B E R 0075720 P X ) a s W H E N N U M 0075740 B E R P X , e t c . \r \t 267 \t 0075760 R E T U R N o r G O m a y 0076000 b e u s e d i n a n y 0076020 o p e r a n d . ( I n t h 0076040 i s c a s e , t h e t r a 0076060 n s l a t i o n o f t h e 0076100 i t e r a t i v e s t a t e m 0076120 e n t w i l l a l w a y s 0076140 b e i n t h e f o r m o 0076160 f a P R O G , n e v e r 0076200 a m a p p i n g f u n c t i 0076220 o n . ) R E T U R N m e a 0076240 n s r e t u r n f r o m t 0076260 h e i . s . ( w i t h t h 0076300 e i n d i c a t e d v a l u 0076320 e ) , n o t f r o m t h e 0076340 f u n c t i o n i n w h i 0076360 c h t h e i . s a p p e a 0076400 r s . G O r e f e r s t 0076420 o a l a b e l e l s e w h 0076440 e r e i n t h e f u n c t 0076460 i o n i n w h i c h t h e 0076500 i . s . a p p e a r s , e 0076520 x c e p t f o r t h e l a 0076540 b e l s $ $ L P , $ $ I T E 0076560 R A T E , a n d $ $ O U T 0076600 w h i c h a r e r e s e r v 0076620 e d , a s d e s c r i b e d 0076640 b e l o w . \r \t 267 \t I n t h 0076660 e c a s e o f F I R S T , 0076700 F I N A L L Y , E A C H T I 0076720 M E , D E C L A R E : o r 0076740 o n e o f t h e i . s . t 0076760 y p e s , e . g . , D O , 0077000 C O L L E C T , S U M , e t 0077020 c . , t h e o p e r a n d 0077040 c a n c o n s i s t o f m 0077060 o r e t h a n o n e f o r 0077100 m , e . g . , C O L L E C T 0077120 ( P R I N T ( C A R X ) ) 0077140 ( C D R X ) , i n w h i 0077160 c h c a s e a P R O G N 0077200 i s s u p p l i e d . \r \t 267 \t 0077220 E a c h o p e r a n d c a n 0077240 b e t h e n a m e o f 0077260 a f u n c t i o n , i n w 0077300 h i c h c a s e i t i s 0077320 a p p l i e d t o t h e ( 0077340 l a s t ) i . v . , e . g . 0077360 , ( f o r X i n Y d o 0077400 P R I N T w h e n N U M B 0077420 E R P ) i s t h e s a m e 0077440 a s ( f o r X i n Y 0077460 d o ( P R I N T X ) w h e 0077500 n ( N U M B E R P X ) ) . 0077520 N o t e t h a t t h e i 0077540 . v . n e e d n o t b e 0077560 e x p l i c i t l y s p e c i 0077600 f i e d , e . g . , ( i n 0077620 Y d o P R I N T w h e n 0077640 N U M B E R P ) w i l l w o 0077660 r k . \r F o r i . s . t y p e 0077700 s , e . g . , D O , C O L 0077720 L E C T , J O I N , t h e 0077740 f u n c t i o n i s a l w a 0077760 y s a p p l i e d t o t h 0100000 e f i r s t i . v . i n 0100020 t h e i . s . , w h e t h e 0100040 r e x p l i c i t y n a m e 0100060 d o r n o t . F o r e 0100100 x a m p l e , ( i n Y a s 0100120 I f r o m 1 t o 1 0 0100140 d o P R I N T ) p r i n t s 0100160 e l e m e n t s o n Y , 0100200 n o t i n t e g e r s b e t 0100220 w e e n 1 a n d 1 0 . \r N 0100240 o t e t h a t t h i s f e 0100260 a t u r e d o e s n o t m 0100300 a k e m u c h s e n s e f 0100320 o r F O R , O L D , B I N 0100340 D , I N , o r O N , s i 0100360 n c e t h e y " o p e r a t 0100400 e " b e f o r e t h e l o 0100420 o p s t a r t s , w h e n 0100440 t h e i . v . m a y n o t 0100460 e v e n b e b o u n d . \r 0100500 I n t h e c a s e o f B 0100520 Y i n c o n j u n c t i o n 0100540 w i t h I N , t h e f u 0100560 n c t i o n i s a p p l i e 0100600 d t o t h e c u r r e n t 0100620 t a i l e . g . , ( f o r 0100640 X i n Y b y C D D R 0100660 . . . ) i s t h e s a m e 0100700 a s ( f o r X i n Y 0100720 b y ( C D D R X ) . . . ) 0100740 . \r \t 267 \t W h i l e t h e e 0100760 x a c t f o r m o f t h e 0101000 t r a n s l a t i o n o f 0101020 a n i t e r a t i v e s t a 0101040 t e m e n t d e p e n d s o 0101060 n w h i c h o p e r a t o r 0101100 s a r e p r e s e n t , a 0101120 P R O G w i l l a l w a y 0101140 s b e u s e d w h e n e v 0101160 e r t h e i . s . s p e c 0101200 i f i e s d u m m y v a r i 0101220 a b l e s , i . e . , i f 0101240 a B I N D o p e r a t o r 0101260 a p p e a r s , o r t h e r 0101300 e i s m o r e t h a n o 0101320 n e v a r i a b l e s p e c 0101340 i f i e d b y a F O R o 0101360 p e r a t o r , o r a G O 0101400 , R E T U R N , o r a r 0101420 e f e r e n c e t o t h e 0101440 v a r i a b l e $ $ V A L 0101460 a p p e a r s i n a n y o 0101500 f t h e o p e r a n d s . 0101520 W h e n a P R O G i s u 0101540 s e d , t h e f o r m o f 0101560 t h e t r a n s l a t i o n 0101600 i s : \r ( P R O G V A R I A 0101620 B L E S \r { i n i t 0101640 i a l i z e } \r $ $ L P { e 0101660 a c h t i m e } \r { 0101700 t e s t } \r { b o d 0101720 y } \r $ $ I T E R A T E \r 0101740 { a f t e r t e s t } \r 0101760 { u p d a t e } \r 0102000 ( G O $ $ L P ) \r $ $ 0102020 O U T { f i n a l i z e } \r 0102040 ( R E T U R N $ $ V 0102060 A L ) ) \r w h e r e { t e s t 0102100 } c o r r e s p o n d s t o 0102120 t h a t p o r t i o n o f 0102140 t h e l o o p t h a t t 0102160 e s t s f o r t e r m i n a 0102200 t i o n a n d a l s o f o 0102220 r t h o s e i t e r a t i o 0102240 n s f o r w h i c h { b o 0102260 d y } i s n o t g o i n g 0102300 t o b e e x e c u t e d , 0102320 ( a s i n d i c a t e d b 0102340 y a W H E N o r U N L E 0102360 S S ) ; { b o d y } c o r r 0102400 e s p o n d s t o t h e o 0102420 p e r a n d o f t h e i . 0102440 s . t y p e , e . g . , D O 0102460 , C O L L E C T , e t c . ; 0102500 { a f t e r t e s t } c o r 0102520 r e s p o n d s t o t h o s 0102540 e t e s t s f o r t e r m 0102560 i n a t i o n s p e c i f i e 0102600 d b y R E P E A T W H I L E 0102620 o r R E P E A T U N T I L ; 0102640 a n d { u p d a t e } c o 0102660 r r e s p o n d s t o t h a 0102700 t p a r t t h a t r e s e 0102720 t s t h e t a i l , i n c 0102740 r e m e n t s t h e c o u n 0102760 t e r , e t c . i n p r e 0103000 p a r a t i o n f o r t h e 0103020 n e x t i t e r a t i o n . 0103040 { i n i t i a l i z e } , 0103060 { f i n a l i z e } , a n d 0103100 { e a c h t i m e } c o r r e 0103120 s p o n d t o t h e o p e 0103140 r a n d s o f F I R S T , 0103160 F I N A L L Y , a n d E A C 0103200 H T I M E , i f a n y . \r N 0103220 o t e t h a t s i n c e { 0103240 b o d y } a l w a y s a p p 0103260 e a r s a t t h e t o p 0103300 l e v e l o f t h e P R O 0103320 G , t h e u s e r c a n 0103340 i n s e r t l a b e l s i n 0103360 { b o d y } , a n d G O 0103400 t o t h e m f r o m w i t 0103420 h i n { b o d y } o r f r 0103440 o m o t h e r i . s . o p 0103460 e r a n d s , e . g . , ( f 0103500 o r X i n Y f i r s t 0103520 ( G O A ) d o ( F O O ) 0103540 A ( F I E ) ) . H o w e v 0103560 e r , s i n c e { b o d y } 0103600 i s d w i m i f i e d a s 0103620 a l i s t o f f o r m s 0103640 , t h e l a b e l ( s ) s 0103660 h o u l d b e a d d e d t 0103700 o t h e d u m m y v a r i 0103720 a b l e s f o r t h e i t 0103740 e r a t i v e s t a t e m e n 0103760 t i n o r d e r t o p r 0104000 e v e n t t h e i r b e i n 0104020 g d w i m i f i e d a n d 0104040 p o s s i b l y " c o r r e c 0104060 t e d " , e . g . , ( f o r 0104100 X i n Y b i n d A f 0104120 i r s t ( G O A ) d o ( 0104140 F O O ) A ( F I E ) ) . 0104160 T h e u s e r c a n a l s 0104200 o G O t o $ $ L P , $ $ 0104220 I T E R A T E , o r $ $ O U 0104240 T , o r e x p l i c i t l y 0104260 s e t $ $ V A L . \r 9 . 8 . 0104300 6 \t E r r o r s i n I t 0104320 e r a t i v e S t a t e m e n 0104340 t s \r \r A n e r r o r w i l 0104360 l b e g e n e r a t e d a 0104400 n d a n a p p r o p r i a t 0104420 e d i a g n o s t i c p r i 0104440 n t e d i f a n y o f t 0104460 h e f o l l o w i n g c o n 0104500 d i t i o n s h o l d : \r ( 1 0104520 ) O p e r a t o r w i t h 0104540 n u l l o p e r a n d , i 0104560 . e . , t w o a d j a c e n 0104600 t o p e r a t o r s , a s 0104620 i n ( f o r X i n Y u 0104640 n t i l d o . . . ) \r ( 2 ) 0104660 O p e r a n d c o n s i s 0104700 t i n g o f m o r e t h a 0104720 n o n e f o r m ( e x c e 0104740 p t a s o p e r a n d t o 0104760 F I R S T , F I N A L L Y , 0105000 o r o n e o f t h e i 0105020 . s . t y p e s ) , e . g . , 0105040 ( f o r X i n Y ( P R 0105060 I N T X ) c o l l e c t . 0105100 . . ) . \r ( 3 ) I N , O N 0105120 , F R O M , T O , o r B 0105140 Y a p p e a r t w i c e i 0105160 n s a m e i . s . \r ( 4 ) 0105200 B o t h I N a n d O N 0105220 u s e d o n s a m e i . v 0105240 . \r ( 5 ) F R O M o r T 0105260 O u s e d w i t h I N o 0105300 r O N o n s a m e i . v 0105320 . \r ( 6 ) M o r e t h a n 0105340 o n e i . s . t y p e , e 0105360 . g . , a D O a n d a 0105400 S U M . \r I n 3 , 4 , o r 0105420 5 , a n e r r o r i s 0105440 n o t g e n e r a t e d i f 0105460 a n i n t e r v e n i n g 0105500 A S o c c u r s . \r I f a n 0105520 e r r o r o c c u r s , t 0105540 h e i . s . i s l e f t 0105560 u n c h a n g e d . \r I f n o 0105600 D O , C O L L E C T , J O 0105620 I N o r a n y o f t h e 0105640 o t h e r i . s . t y p e s 0105660 a r e s p e c i f i e d , 0105700 C L I S P w i l l f i r s t 0105720 a t t e m p t t o f i n d 0105740 a n o p e r a n d c o n s 0105760 i s t i n g o f m o r e t 0106000 h a n o n e f o r m , e . 0106020 g . , ( f o r X i n Y 0106040 ( P R I N T X ) w h e n A 0106060 T O M X . . . ) , a n d 0106100 i n t h i s c a s e w i l 0106120 l i n s e r t a D O a f 0106140 t e r t h e f i r s t f o 0106160 r m . ( I n t h i s c a 0106200 s e , c o n d i t i o n 2 0106220 i s n o t c o n s i d e r e 0106240 d t o b e m e t , a n d 0106260 a n e r r o r i s n o t 0106300 g e n e r a t e d . ) I f 0106320 C L I S P c a n n o t f i 0106340 n d s u c h a n o p e r a 0106360 n d , a n d n o W H I L E 0106400 o r U N T I L a p p e a r 0106420 s i n t h e i . s . , a 0106440 w a r n i n g m e s s a g e 0106460 i s p r i n t e d : N O 0106500 D O , C O L L E C T , O R 0106520 J O I N : f o l l o w e d b 0106540 y t h e i . s . \r S i m i l 0106560 a r l y , i f n o t e r m 0106600 i n a t i n g c o n d i t i o 0106620 n i s d e t e c t e d , i 0106640 . e . , n o I N , O N , 0106660 W H I L E , U N T I L , T O 0106700 , o r a R E T U R N o r 0106720 G O , a w a r n i n g m 0106740 e s s a g e i s p r i n t e 0106760 d : P O S S I B L E N O N - 0107000 T E R M I N A T I N G I T E R 0107020 A T I V E S T A T E M E N T : 0107040 f o l l o w e d b y t h e 0107060 i t e r a t i v e s t a t e 0107100 m e n t . H o w e v e r , 0107120 s i n c e t h e u s e r m 0107140 a y b e p l a n n i n g t 0107160 o t e r m i n a t e t h e 0107200 i . s . v i a a n e r r o 0107220 r , c o n t r o l - E , o r 0107240 a R E T F R O M f r o m 0107260 a l o w e r f u n c t i o n 0107300 , t h e i . s . i s s t 0107320 i l l t r a n s l a t e d . 0107340 N o t e : T h e e r r o 0107360 r m e s s a g e i s n o t 0107400 p r i n t e d i f t h e 0107420 v a l u e o f C L I S P I . 0107440 S . G A G i s T ( i n i t 0107460 i a l l y N I L ) . \r 9 . 8 . 0107500 7 \t D e f i n i n g N e w 0107520 I t e r a t i v e S t a t e 0107540 m e n t O p e r a t o r s \r \r 0107560 T h e f o l l o w i n g f u 0107600 n c t i o n i s a v a i l a 0107620 b l e f o r d e f i n i n g 0107640 n e w o r r e d e f i n i 0107660 n g e x i s t i n g i t e r 0107700 a t i v e s t a t e m e n t 0107720 o p e r a t o r s : \r ( I . S . 0107740 O P R N A M E F O R M O T 0107760 H E R S E V A L F L G ) \t 0110000 [ F u n c t i o n ] \r N A M E 0110020 i s t h e n a m e o f t 0110040 h e n e w i . s . o p r . 0110060 I f F O R M i s a l i 0110100 s t , N A M E w i l l b e 0110120 a n e w i . s . t y p e 0110140 ( s e e p a g e X . X X ) , 0110160 a n d F O R M i t s b o 0110200 d y . \r O T H E R S i s a n 0110220 ( o p t i o n a l ) l i s t 0110240 o f a d d i t i o n a l i 0110260 . s . o p e r a t o r s a n 0110300 d o p e r a n d s w h i c h 0110320 w i l l b e a d d e d t 0110340 o t h e i . s . a t t h 0110360 e p l a c e w h e r e N A 0110400 M E a p p e a r s . I f 0110420 F O R M i s N I L , N A M 0110440 E i s a n e w i . s . o 0110460 p r d e f i n e d e n t i r 0110500 e l y b y O T H E R S . \r I 0110520 n b o t h F O R M a n d 0110540 O T H E R S , t h e a t o m 0110560 $ $ V A L c a n b e u s 0110600 e d t o r e f e r e n c e 0110620 t h e v a l u e t o b e 0110640 r e t u r n e d b y t h e 0110660 i . s . , I . V . t o r e 0110700 f e r e n c e t h e c u r r 0110720 e n t i . v . , a n d B O 0110740 D Y t o r e f e r e n c e 0110760 N A M E ' s o p e r a n d . 0111000 I n o t h e r w o r d s , 0111020 t h e c u r r e n t i . v 0111040 . w i l l b e s u b s t i 0111060 t u t e d f o r a l l i n 0111100 s t a n c e s o f I . V . 0111120 a n d N A M E ' s o p e r a 0111140 n d w i l l b e s u b s t 0111160 i t u t e d f o r a l l i 0111200 n s t a n c e s o f B O D Y 0111220 t h r o u g h o u t F O R M 0111240 a n d O T H E R S . \r I f 0111260 E V A L F L G i s T , F O 0111300 R M a n d O T H E R S a r 0111320 e e v a l u a t e d a t t 0111340 r a n s l a t i o n t i m e , 0111360 a n d t h e i r v a l u e 0111400 s u s e d a s d e s c r i 0111420 b e d a b o v e . A d u 0111440 m m y v a r i a b l e f o r 0111460 u s e i n t r a n s l a t 0111500 i o n t h a t d o e s n o 0111520 t c l a s h w i t h a d 0111540 u m m y v a r i a b l e a l 0111560 r e a d y u s e d b y s o 0111600 m e o t h e r i . s . o p 0111620 e r a t o r s c a n b e o 0111640 b t a i n e d b y c a l l i 0111660 n g ( G E T D U M M Y V A R ) 0111700 . ( G E T D U M M Y V A R T 0111720 ) w i l l r e t u r n a 0111740 d u m m y v a r i a b l e a 0111760 n d a l s o i n s u r e t 0112000 h a t i t i s b o u n d 0112020 a s a P R O G v a r i a b 0112040 l e i n t h e t r a n s l 0112060 a t i o n . \r I f N A M E w 0112100 a s p r e v i o u s l y a n 0112120 i . s . o p r a n d i s 0112140 b e i n g r e d e f i n e d , 0112160 t h e m e s s a g e ( N A 0112200 M E R E D E F I N E D ) w i 0112220 l l b e p r i n t e d ( u 0112240 n l e s s D F N F L G = T ) , 0112260 a n d a l l e x p r e s s 0112300 i o n s u s i n g t h e i 0112320 . s . o p r N A M E t h a t 0112340 h a v e b e e n t r a n s 0112360 l a t e d w i l l h a v e 0112400 t h e i r t r a n s l a t i o 0112420 n s d i s c a r d e d . \r \r T 0112440 h e f o l l o w i n g a r e 0112460 s o m e e x a m p l e s o 0112500 f h o w I . S . O P R c o 0112520 u l d b e c a l l e d t o 0112540 d e f i n e s o m e e x i 0112560 s t i n g i . s . o p r s , 0112600 a n d c r e a t e s o m e 0112620 n e w o n e s : \r \t C O L L E 0112640 C T \t \r ( I . S . O P R ' C O 0112660 L L E C T \r ' 0112700 ( S E T Q $ $ V A L ( N C O 0112720 N C 1 $ $ V A L B O D Y ) ) 0112740 ) \r \t S U M \t \r ( I . S . O P R 0112760 ' S U M \r ' 0113000 ( $ $ V A L _ $ $ V A L + B O D 0113020 Y ) \r ' ( F I 0113040 R S T $ $ V A L _ 0 ) ) \r N o 0113060 t e : $ $ V A L + B O D Y 0113100 i s u s e d i n s t e a d 0113120 o f ( I P L U S $ $ V A L 0113140 B O D Y ) s o t h a t t h 0113160 e c h o i c e o f f u n c 0113200 t i o n u s e d i n t h e 0113220 t r a n s l a t i o n , i . 0113240 e . , I P L U S , F P L U S 0113260 , o r P L U S , w i l l 0113300 b e d e t e r m i n e d b y 0113320 t h e d e c l a r a t i o n 0113340 s t h e n i n e f f e c t 0113360 . \r \t N E V E R \t \r ( I . S . O 0113400 P R ' N E V E R \r 0113420 ' ( i f B O D Y t h e 0113440 n $ $ V A L _ N I L ( G O 0113460 $ $ O U T ) ) ) \r N o t e : 0113500 ( i f B O D Y t h e n ( R 0113520 E T U R N N I L ) ) w o u l 0113540 d e x i t f r o m t h e 0113560 i . s . i m m e d i a t e l y 0113600 a n d t h e r e f o r e n 0113620 o t e x e c u t e t h e o 0113640 p e r a t i o n s s p e c i f 0113660 i e d v i a a F I N A L L 0113700 Y ( i f a n y ) . \r \t T H E 0113720 R E I S \t \r ( I . S . O P R ' 0113740 T H E R E I S \r 0113760 ' ( i f B O D Y t h e n 0114000 $ $ V A L _ I . V . ( G O $ 0114020 $ O U T ) ) ) \r \t R C O L L E C 0114040 T \t T o d e f i n e R C O L 0114060 L E C T , a v e r s i o n 0114100 o f C O L L E C T w h i c h 0114120 u s e s C O N S i n s t e 0114140 a d o f N C O N C 1 a n d 0114160 t h e n r e v e r s e s t 0114200 h e l i s t o f v a l u e 0114220 s : \r ( I . S . O P R ' R C O 0114240 L L E C T \r ' 0114260 ( $ $ V A L _ ( C O N S B O D 0114300 Y $ $ V A L ) ) \r 0114320 ' ( F I N A L L Y ( R E 0114340 T U R N ( D R E V E R S E $ 0114360 $ V A L ) ) ) ] \r \t T C O L L E 0114400 C T \t T o d e f i n e T C O 0114420 L L E C T , a v e r s i o n 0114440 o f C O L L E C T w h i c 0114460 h u s e s T C O N C : \r ( I 0114500 . S . O P R ' T C O L L E C T 0114520 \r ' ( T C O N 0114540 C $ $ V A L B O D Y ) \r 0114560 ' ( F I R S T $ 0114600 $ V A L _ ( C O N S ) F I N A 0114620 L L Y ( R E T U R N ( C A R 0114640 $ $ V A L ) ) ) ] \r \t P R O D 0114660 U C T \t \r ( I . S . O P R ' P 0114700 R O D U C T \r 0114720 ' ( $ $ V A L _ $ $ V A L * B O 0114740 D Y ) \r ' ( F 0114760 I R S T $ $ V A L _ 1 ) ] \r \t 0115000 U P T O \t T o d e f i n e U 0115020 P T O , a v e r s i o n o 0115040 f T O w h o s e o p e r a 0115060 n d i s e v a l u a t e d 0115100 o n l y o n c e : \r ( I . S . 0115120 O P R ' U P T O \r 0115140 N I L \r 0115160 ' ( B I N D $ $ F O O _ B O D 0115200 Y T O $ $ F O O ) ] \r \t T O 0115220 \t T o r e d e f i n e T O 0115240 s o t h a t i n s t e a d 0115260 o f r e c o m p u t i n g F 0115300 O R M e a c h i t e r a t i 0115320 o n , a v a r i a b l e i 0115340 s b o u n d t o t h e v 0115360 a l u e o f F O R M , a n 0115400 d t h e n t h a t v a r i 0115420 a b l e i s u s e d : \r ( I 0115440 . S . O P R ' T O \r 0115460 N I L \r 0115500 ' ( B I N D $ $ E N D F I 0115520 R S T $ $ E N D _ B O D Y O 0115540 R I G I N A L T O $ $ E N D 0115560 ) ] \r N o t e t h e u s e 0115600 o f O R I G I N A L t o r 0115620 e d e f i n e T O i n t e 0115640 r m s o f i t s o r i g i 0115660 n a l d e f i n i t i o n . 0115700 O R I G I N A L i s i n t 0115720 e n d e d f o r u s e i n 0115740 r e d e f i n i n g b u i l 0115760 t - i n o p e r a t o r s , 0116000 s i n c e t h e i r d e f i 0116020 n i t i o n s a r e n o t 0116040 a c c e s s i b l e , a n d 0116060 h e n c e n o t d i r e c t 0116100 l y m o d i f i a b l e . 0116120 T h u s i f t h e o p e r 0116140 a t o r h a d b e e n d e 0116160 f i n e d b y t h e u s e 0116200 r v i a I . S . O P R , O 0116220 R I G I N A L w o u l d n o 0116240 t o b t a i n i t s o r i 0116260 g i n a l d e f i n i t i o n 0116300 . I n t h i s c a s e , 0116320 o n e p r e s u m a b l y 0116340 w o u l d s i m p l y m o d 0116360 i f y t h e i . s . o p r 0116400 d e f i n i t i o n . \r I . S . 0116420 O P R c a n a l s o b e 0116440 u s e d t o d e f i n e s 0116460 y n o n y m s f o r a l r e 0116500 a d y d e f i n e d i . s . 0116520 o p e r a t o r s b y c a 0116540 l l i n g I . S . O P R w i 0116560 t h F O R M a n a t o m , 0116600 e . g . , ( I . S . O P R 0116620 ' W H E R E ' W H E N ) m a 0116640 k e s W H E R E b e t h e 0116660 s a m e a s W H E N . 0116700 S i m i l a r l y , f o l l o 0116720 w i n g ( I . S . O P R ' I 0116740 S T H E R E ' T H E R E I S ) 0116760 , o n e c a n w r i t e 0117000 ( I S T H E R E A T O M I N 0117020 Y ) , a n d f o l l o w i 0117040 n g ( I . S . O P R ' F I N 0117060 D ' F O R ) a n d ( I . S 0117100 . O P R ' S U C H T H A T ' 0117120 T H E R E I S ) , o n e c a 0117140 n w r i t e ( f i n d X 0117160 i n Y s u c h t h a t X 0117200 m e m b e r Z ) . I n t 0117220 h e c u r r e n t s y s t e 0117240 m , W H E R E i s s y n o 0117260 n y m o u s w i t h W H E N 0117300 , S U C H T H A T a n d I 0117320 S T H E R E w i t h T H E R 0117340 E I S , F I N D w i t h F 0117360 O R , a n d T H R U w i t 0117400 h T O . \r I f F O R M i s 0117420 t h e a t o m M O D I F I 0117440 E R , t h e n N A M E i s 0117460 d e f i n e d a s a n i 0117500 . s . o p r w h i c h c a n 0117520 i m m e d i a t e l y f o l 0117540 l o w a n o t h e r i . s . 0117560 o p e r a t o r ( i . e . , 0117600 a n e r r o r w i l l n 0117620 o t b e g e n e r a t e d , 0117640 a s d e s c r i b e d p r 0117660 e v i o u s l y ) . N A M E 0117700 w i l l n o t t e r m i n 0117720 a t e t h e s c o p e o f 0117740 t h e p r e v i o u s o p 0117760 e r a t o r , a n d w i l l 0120000 b e s t r i p p e d o f f 0120020 w h e n D W I M I F Y i s 0120040 c a l l e d o n i t s o 0120060 p e r a n d . O L D i s 0120100 a n e x a m p l e o f a 0120120 M O D I F I E R t y p e o f 0120140 o p e r a t o r . T h e 0120160 M O D I F I E R f e a t u r e 0120200 a l l o w s t h e u s e r 0120220 t o d e f i n e i . s . 0120240 o p e r a t o r s s i m i l a 0120260 r t o O L D , f o r u s 0120300 e i n c o n j u n c t i o n 0120320 w i t h s o m e o t h e r 0120340 u s e r d e f i n e d i . 0120360 s . o p r w h i c h w i l l 0120400 p r o d u c e t h e a p p 0120420 r o p r i a t e t r a n s l a 0120440 t i o n . \r T h e f i l e p 0120460 a c k a g e c o m m a n d I 0120500 . S . O P R S ( p a g e X . 0120520 X X ) w i l l d u m p t h 0120540 e d e f i n i t i o n o f 0120560 i . s . o p r s . ( I . S . 0120600 O P R S P R O D U C T U P T 0120620 O ) a s a f i l e p a c 0120640 k a g e c o m m a n d w i l 0120660 l p r i n t s u i t a b l e 0120700 e x p r e s s i o n s s o 0120720 t h a t t h e s e i t e r a 0120740 t i v e s t a t e m e n t o 0120760 p e r a t o r s w i l l b e 0121000 ( r e ) d e f i n e d w h e 0121020 n t h e f i l e i s l o 0121040 a d e d . \r \r C o p y r i g h t 0121060 ( c ) 1 9 8 5 X e r o x 0121100 C o r p o r a t i o n . A l 0121120 l r i g h t s r e s e r v e 0121140 d . \r \r 0121144