$ 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