$ od -c -N 50000 [eris]<Lisp>KOTO>Library>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
0036560 t h e u s e r h a v i n g
0036600 t o p e r f o r m t h e m
0036620 e n t a l t r a n s f o r m a
0036640 t i o n s t o a n e q u i
0036660 v 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 ,
0036740 e 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
0037020 t o p r o v i d e a r o b
0037040 u 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
0037100 c o u l d " m a k e s e n s
0037120 e " o u t o f a w i d e
0037140 c l a s s o f i t e r a t
0037160 i 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
0037220 e u s e r s h o u l d n o
0037240 t f e e l o b l i g e d t
0037260 o r e a d a n d u n d e r
0037300 s t a n d i n d e t a i l
0037320 t h e d e s c r i p t i o n
0037340 o 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
0037400 o r d e r t o u s e i t e
0037420 r a t i v e s t a t e m e n t
0037440 s . \r A n i t e r a t i v e
0037460 s t a t e m e n t i s a f
0037500 o r m c o n s i s t i n g o
0037520 f a n u m b e r o f s p
0037540 e c i a l w o r d s ( k n o
0037560 w n a s i . s . o p e r a
0037600 t o r s o r i . s . o p r s
0037620 ) , f o l l o w e d b y o
0037640 p 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
0037720 r e s i m i l a r t o i t
0037740 e r a t i v e s t a t e m e n
0037760 t s i n o t h e r p r o g
0040000 r a m m i n g l a n g u a g e
0040020 s ; o t h e r i . s . o p
0040040 r s ( C O L L E C T , J O I
0040060 N , I N , e t c . ) s p e
0040100 c i f y u s e f u l o p e r
0040120 a 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
0040160 o w e r c a s e v e r s i o
0040200 n s o f i . s . o p r s (
0040220 d o , c o l l e c t , e t c
0040240 . ) c a n a l s o b e u
0040260 s e d . H e r e a r e s
0040300 o m e e x a m p l e s o f
0040320 i t e r a t i v e s t a t e m
0040340 e n t s : \r _ ( f o r X f
0040360 r o m 1 t o 5 d o ( P
0040400 R I N T ' F O O ) ) \r F O O \r
0040420 F O O \r F O O \r F O O \r F O O \r
0040440 N I L \r _ ( f o r X f r o
0040460 m 2 t o 1 0 b y 2 c
0040500 o l l e c t ( T I M E S X
0040520 X ) ) \r ( 4 1 6 3 6 6 4
0040540 1 0 0 ) \r _ ( f o r X i n
0040560 ' ( A B 1 C 6 . 5 N
0040600 I L ( 4 5 ) ) c o u n t (
0040620 N U M B E R P X ) ) \r 2 \r I t
0040640 e r a t i v e s t a t e m e n
0040660 t s a r e i m p l e m e n t
0040700 e 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
0040740 e 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
0041020 t c . I t e r a t i v e s
0041040 t a t e m e n t f o r m s a
0041060 r e t r a n s l a t e d u s
0041100 i n g a l l C L I S P d e
0041120 c l a r a t i o n s i n e f
0041140 f e c t ( s t a n d a r d / f
0041160 a s t / u n d o a b l e / e t
0041200 c . ) ; s e e p a g e X .
0041220 X X . M i s s p e l l e d
0041240 i . s . o p r s a r e r e c
0041260 o g n i z e d a n d c o r r
0041300 e c t e d u s i n g t h e
0041320 s p e l l i n g l i s t C L
0041340 I 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
0041400 p p e a r a n c e o f o p e
0041420 r a t o r s i s n e v e r
0041440 i 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
0041500 e s t a t e m e n t b e f o
0041520 r e i t b e g i n s t o
0041540 c o n s t r u c t t h e e q
0041560 u i v a l e n t I n t e r l i
0041600 s p f o r m . N e w i .
0041620 s . o p r s c a n b e d e
0041640 f i n e d a s d e s c r i b
0041660 e d o n p a g e X . X X .
0041700 \r I f t h e u s e r d e f
0041720 i n e s a f u n c t i o n
0041740 b y t h e s a m e n a m e
0041760 a s a n i . s . o p r (
0042000 W H I L E , T O , e t c . )
0042020 , t h e i . s . o p r w i
0042040 l l n o l o n g e r h a v
0042060 e t h e C L I S P i n t e
0042100 r p r e t a t i o n w h e n
0042120 i t a p p e a r s a s C A
0042140 R o f a f o r m , a l t
0042160 h o u g h i t w i l l c o
0042200 n t i n u e t o b e t r e
0042220 a t e d a s a n i . s . o
0042240 p 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
0042340 a l e r t t h e u s e r ,
0042360 a w a r n i n g m e s s a g
0042400 e i s p r i n t e d , e .
0042420 g . , ( W H I L E D E F I N
0042440 E D , T H E R E F O R E D I
0042460 S A B L E D I N C L I S P )
0042500 . \r 9 . 8 . 1 \t I . s . t y
0042520 p e s \r \r T h e f o l l o w i
0042540 n g i . s . o p r s a r e
0042560 e x a m p l e s o f a c e
0042600 r t a i n k i n d o f i t
0042620 e r a t i v e s t a t e m e n
0042640 t o p e r a t o r c a l l e
0042660 d a n i . s . t y p e .
0042700 T h e i . s . t y p e s p e
0042720 c i f i e s w h a t i s t
0042740 o b e d o n e a t e a c
0042760 h i t e r a t i o n . I t
0043000 s o p e r a n d i s c a l
0043020 l e d t h e " b o d y " o
0043040 f t h e i t e r a t i v e
0043060 s 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
0043120 m e n t m u s t h a v e o
0043140 n e a n d o n l y o n e
0043160 i . s . t y p e . \r D O F O R
0043200 M \t [ I . S . O p e r a t
0043220 o r ] \r S p e c i f i e s w h
0043240 a 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
0043300 o n . D O w i t h n o
0043320 o t h e r o p e r a t o r s
0043340 p e c i f i e s a n i n f i
0043360 n i t e l o o p . I f s
0043400 o m e e x p l i c i t o r
0043420 i m p l i c i t t e r m i n a
0043440 t i n g c o n d i t i o n i
0043460 s s p e c i f i e d , t h e
0043500 v a l u e o f t h e i .
0043520 s . i s N I L . T r a n
0043540 s l a t e s t o M A P C o
0043560 r M A P w h e n e v e r p
0043600 o s s i b l e . \r \r C O L L E C
0043620 T F O R M \t [ I . S . O
0043640 p e r a t o r ] \r S p e c i f i
0043660 e s t h a t t h e v a l u
0043700 e o f F O R M a t e a c
0043720 h i t e r a t i o n i s t
0043740 o b e c o l l e c t e d i
0043760 n a l i s t , w h i c h
0044000 i s r e t u r n e d a s t
0044020 h e v a l u e o f t h e
0044040 i . s . w h e n i t t e r
0044060 m i n a t e s . T r a n s l
0044100 a t e s t o M A P C A R ,
0044120 M A P L I S T o r S U B S E
0044140 T w h e n e v e r p o s s i
0044160 b l e . \r W h e n C O L L E C
0044200 T t r a n s l a t e s t o
0044220 a P R O G ( e . g . , i f
0044240 U N T I L , W H I L E , e
0044260 t c . a p p e a r i n t h
0044300 e i . s . ) , t h e t r a
0044320 n 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
0044360 s i n g t w o p o i n t e r
0044400 s s i m i l a r t o t h a
0044420 t u s e d b y t h e c o
0044440 m p i l e r f o r c o m p i
0044460 l 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
0044520 a n s l a t i o n , p e r f o
0044540 r m ( C L D I S A B L E ' F
0044560 C O L L E C T ) ( s e e p a
0044600 g e X . X X ) . \r \r J O I N
0044620 F O R M \t [ I . S . O p e
0044640 r a t o r ] \r S i m i l a r t
0044660 o C O L L E C T , e x c e p
0044700 t t h a t t h e v a l u e
0044720 s o f F O R M a t e a c
0044740 h i t e r a t i o n a r e
0044760 N C O N C e d . T r a n s l
0045000 a t e s t o M A P C O N C
0045020 o r M A P C O N w h e n e v
0045040 e r p o s s i b l e . / N
0045060 C O N C , / M A P C O N C ,
0045100 a n d / M A P C O N a r e
0045120 u s e d w h e n t h e C L
0045140 I S P d e c l a r a t i o n
0045160 U N D O A B L E i s i n e
0045200 f f e c t . \r \r S U M F O R M
0045220 \t [ I . S . O p e r a t o
0045240 r ] \r S p e c i f i e s t h a
0045260 t t h e v a l u e s o f
0045300 F O R M a t e a c h i t e
0045320 r a t i o n b e a d d e d
0045340 t o g e t h e r a n d r e t
0045360 u r n e d a s t h e v a l
0045400 u e o f t h e i . s . ,
0045420 e . g . , ( f o r I f r o
0045440 m 1 t o 5 s u m ( T I
0045460 M E S I I ) ) r e t u r n
0045500 s 1 + 4 + 9 + 1 6 + 2 5 =
0045520 5 5 . I P L U S , F P L U
0045540 S , o r P L U S w i l l
0045560 b e u s e d i n t h e t
0045600 r a n s l a t i o n d e p e n
0045620 d i n g o n t h e C L I S
0045640 P d e c l a r a t i o n s i
0045660 n e f f e c t . \r \r C O U N T
0045700 F O R M \t [ I . S . O p
0045720 e r a t o r ] \r C o u n t s t
0045740 h e n u m b e r o f t i m
0045760 e s t h a t F O R M i s
0046000 t r u e , a n d r e t u r n
0046020 s t h a t c o u n t a s
0046040 i t s v a l u e . \r \r A L W A
0046060 Y S F O R M \t [ I . S .
0046100 O p e r a t o r ] \r R e t u r n
0046120 s T i f t h e v a l u e
0046140 o f F O R M i s n o n -
0046160 N I L f o r a l l i t e r
0046200 a t i o n s . ( N o t e :
0046220 r e t u r n s N I L a s s
0046240 o 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
0046340 S i m i l a r t o A L W A Y
0046360 S , e x c e p t r e t u r n
0046400 s T i f t h e v a l u e
0046420 o f F O R M i s n e v e
0046440 r t r u e . ( N o t e :
0046460 r e t u r n s N I L a s s
0046500 o o n a s t h e v a l u e
0046520 o f F O R M i s n o n -
0046540 N I L ) . \r \r T h e f o l l o
0046560 w i n g i . s . t y p e s e
0046600 x p l i c i t l y r e f e r
0046620 t 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
0046700 e s t a t e m e n t , w h i
0046720 c 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
0046760 r 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
0047040 E I S F O R M \t [ I . S .
0047060 O p e r a t o r ] \r R e t u r
0047100 n s t h e f i r s t v a l
0047120 u e o f t h e i . v . f
0047140 o 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
0047220 e i s ( N U M B E R P X ) )
0047240 r e t u r n s t h e f i r
0047260 s t n u m b e r i n Y .
0047300 ( N o t e : r e t u r n s
0047320 t 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
0047400 R M i s n o n - N I L ) . \r
0047420 \r L A R G E S T F O R M \t
0047440 [ I . S . O p e r a t o r ] \r
0047460 S M A L L E S T F O R M \t
0047500 [ I . S . O p e r a t o r ] \r
0047520 R e t u r n s t h e v a l u
0047540 e o f t h e i . v . t h
0047560 a t p r o v i d e s t h e
0047600 l 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
0047660 l w a y s b o u n d t o t
0047700 h e c u r r e n t g r e a t
0047720 e s t / s m a l l e s t v a l
0047740 u e , $ $ V A L t o t h e
0047760 v a l u e o f t h e i .
0050000 v . f r o m w h i c h i t
0050020 c a m e . \r \r 9 . 8 . 2 \t
0050040 I t e r a t i o n V a r i a b
0050060 l e I . s . o p r s \r \r F O R
0050100 V A R \t [ I . S . O p e
0050120 r a t o r ] \r S p e c i f i e s
0050140 t h e i t e r a t i o n v
0050160 a r i a b l e ( i . v . ) w
0050200 h i c h i s u s e d i n
0050220 c o n j u n c t i o n w i t h
0050240 I N , O N , F R O M , T
0050260 O , a n d B Y . T h e
0050300 v a r i a b l e i s r e b o
0050320 u n d w i t h i n t h e i
0050340 . s . , s o t h e v a l u
0050360 e o f t h e v a r i a b l
0050400 e o u t s i d e t h e i .
0050420 s . i s n o t e f f e c t
0050440 e d . E x a m p l e : \r _
0050460 ( S E T Q X 5 5 ) \r 5 5 \r _
0050500 ( f o r X f r o m 1 t
0050520 o 5 c o l l e c t ( T I M
0050540 E S X X ) ) \r ( 1 4 9
0050560 1 6 2 5 ) \r _ X \r 5 5 \r \r F
0050600 O R V A R S \t [ I . S .
0050620 O p e r a t o r ] \r V A R S a
0050640 l i s t o f v a r i a b l
0050660 e s , e . g . , ( f o r (
0050700 X Y Z ) i n . . . ) .
0050720 T h e f i r s t v a r i a
0050740 b l e i s t h e i . v . ,
0050760 t h e r e s t a r e d u
0051000 m m y v a r i a b l e s .
0051020 S e e B I N D b e l o w . \r
0051040 \r F O R O L D V A R \t [
0051060 I . S . O p e r a t o r ] \r S
0051100 i m i l a r t o F O R , e
0051120 x c e p t t h a t V A R i
0051140 s n o t r e b o u n d w i
0051160 t h i n t h e i . s . , s
0051200 o t h e v a l u e o f t
0051220 h e i . v . o u t s i d e
0051240 o f t h e i . s . i s c
0051260 h a n g e d . E x a m p l
0051300 e : \r _ ( S E T Q X 5 5 )
0051320 \r 5 5 \r _ ( f o r o l d X
0051340 f r o m 1 t o 5 c o l
0051360 l e c t ( T I M E S X X )
0051400 ) \r ( 1 4 9 1 6 2 5 ) \r
0051420 _ X \r 6 \r \r B I N D V A R
0051440 \t [ I . S . O p e r a t o r
0051460 ] \r B I N D V A R S \t [ I
0051500 . S . O p e r a t o r ] \r U s
0051520 e d t o s p e c i f y d u
0051540 m m y v a r i a b l e s , w
0051560 h i c h a r e b o u n d l
0051600 o c a l l y w i t h i n t h
0051620 e i . s . \r \r N o t e : F
0051640 O R , F O R O L D , a n d
0051660 B I N D v a r i a b l e s
0051700 c a n b e i n i t i a l i z
0051720 e d b y u s i n g t h e
0051740 f o r m V A R _ F O R M : \r (
0051760 f o r o l d ( X _ F O R M )
0052000 b i n d ( Y _ F O R M ) .
0052020 . . ) \r I N F O R M \t [ I
0052040 . S . O p e r a t o r ] \r S p
0052060 e c i f i e s t h a t t h e
0052100 i . s . i s t o i t e r
0052120 a t e d o w n a l i s t
0052140 w i t h t h e i . v . b e
0052160 i n g r e s e t t o t h e
0052200 c o r r e s p o n d i n g e
0052220 l e m e n t a t e a c h i
0052240 t e r a t i o n . F o r e
0052260 x a m p l e , ( f o r X i
0052300 n Y d o . . . ) c o r r
0052320 e s p o n d s t o ( M A P C
0052340 Y ( F U N C T I O N ( L A
0052360 M B D A ( X ) . . . ) ) ) .
0052400 I f n o i . v . h a s
0052420 b e e n s p e c i f i e d ,
0052440 a d u m m y i s s u p p
0052460 l i e d , e . g . , ( i n
0052500 Y c o l l e c t C A D R )
0052520 i s e q u i v a l e n t t o
0052540 ( M A P C A R Y ( F U N C
0052560 T I O N C A D R ) ) . \r \r O N
0052600 F O R M \t [ I . S . O p
0052620 e r a t o r ] \r S a m e a s
0052640 I N e x c e p t t h a t t
0052660 h e i . v . i s r e s e t
0052700 t o t h e c o r r e s p o
0052720 n d i n g t a i l a t e a
0052740 c h i t e r a t i o n . T
0052760 h u s I N c o r r e s p o n
0053000 d s t o M A P C , M A P C
0053020 A R , a n d M A P C O N C ,
0053040 w h i l e O N c o r r e s
0053060 p o n d s t o M A P , M A
0053100 P L I S T , a n d M A P C O
0053120 N . \r \r N o t e : f o r b
0053140 o t h I N a n d O N , F
0053160 O R M i s e v a l u a t e d
0053200 b e f o r e t h e m a i n
0053220 p a r t o f t h e i . s
0053240 . i s e n t e r e d , i .
0053260 e . o u t s i d e o f t h
0053300 e s c o p e o f a n y o
0053320 f t h e b o u n d v a r i
0053340 a b l e s o f t h e i . s
0053360 . F o r e x a m p l e ,
0053400 ( f o r X b i n d ( Y _ '
0053420 ( 1 2 3 ) ) i n Y . .
0053440 . ) w i l l m a p d o w n
0053460 t h e l i s t w h i c h
0053500 i s t h e v a l u e o f
0053520 Y e v a l u a t e d o u t s
0053540 i d e o f t h e i . s . ,
0053560 n o t ( 1 2 3 ) . \r I N
0053600 O L D V A R \t [ I . S .
0053620 O p e r a t o r ] \r S p e c i
0053640 f i e s t h a t t h e i .
0053660 s . i s t o i t e r a t e
0053700 d o w n V A R , w i t h
0053720 V A R i t s e l f b e i n g
0053740 r e s e t t o t h e c o
0053760 r r e s p o n d i n g t a i l
0054000 a t e a c h i t e r a t i
0054020 o n , e . g . , a f t e r
0054040 ( f o r X i n o l d L
0054060 d o . . . u n t i l . . .
0054100 ) f i n i s h e s , L w i
0054120 l l b e s o m e t a i l
0054140 o f i t s o r i g i n a l
0054160 v a l u e . \r \r I N O L D (
0054200 V A R _ F O R M ) \t [ I . S
0054220 . O p e r a t o r ] \r S a m e
0054240 a s I N O L D V A R ,
0054260 e x c e p t V A R i s f i
0054300 r s t s e t t o v a l u e
0054320 o f F O R M . \r \r O N O L
0054340 D V A R \t [ I . S . O p
0054360 e r a t o r ] \r S a m e a s
0054400 I N O L D V A R e x c e p
0054420 t t h e i . v . i s r e
0054440 s e t t o t h e c u r r e
0054460 n t v a l u e o f V A R
0054500 a t e a c h i t e r a t i o
0054520 n , i n s t e a d o f t o
0054540 ( C A R V A R ) . \r \r O N
0054560 O L D ( V A R _ F O R M )
0054600 \t [ I . S . O p e r a t o r ]
0054620 \r S a m e a s O N O L D
0054640 V A R , e x c e p t V A R
0054660 i s f i r s t s e t t o
0054700 v a l u e o f F O R M . \r \r
0054720 I N S I D E F O R M \t [ I
0054740 . S . O p e r a t o r ] \r S i
0054760 m i l a r t o I N , e x c
0055000 e p t t r e a t s f i r s t
0055020 n o n - l i s t , n o n - N
0055040 I L t a i l a s t h e l
0055060 a s t e l e m e n t o f t
0055100 h e i t e r a t i o n , e .
0055120 g . , I N S I D E ' ( A B
0055140 C D . E ) i t e r a t
0055160 e s f i v e t i m e s w i
0055200 t h t h e i . v . s e t
0055220 t o E o n t h e l a s t
0055240 i t e r a t i o n . I N S
0055260 I D E ' A i s e q u i v a
0055300 l e n t t o I N S I D E '
0055320 ( A ) , w h i c h w i l l
0055340 i t e r a t e o n c e . \r \r F
0055360 R O M F O R M \t [ I . S .
0055400 O p e r a t o r ] \r U s e d
0055420 t o s p e c i f y a n i n
0055440 i t i a l v a l u e f o r
0055460 a n u m e r i c a l i . v .
0055500 T h e i . v . i s a u
0055520 t o m a t i c a l l y i n c r
0055540 e m e n t e d b y 1 a f t
0055560 e r e a c h i t e r a t i o
0055600 n ( u n l e s s B Y i s
0055620 s p e c i f i e d ) . I f
0055640 n o i . v . h a s b e e n
0055660 s p e c i f i e d , a d u
0055700 m m y i . v . i s s u p p
0055720 l i e d a n d i n i t i a l
0055740 i z e d , e . g . , ( f r o
0055760 m 2 t o 5 c o l l e c t
0056000 S Q R T ) r e t u r n s (
0056020 1 . 4 1 4 1 . 7 3 2 2 . 0
0056040 2 . 2 3 6 ) . \r \r T O F O R M
0056060 \t [ I . S . O p e r a t o
0056100 r ] \r U s e d t o s p e c i
0056120 f y t h e f i n a l v a l
0056140 u e f o r a n u m e r i c
0056160 a l i . v . I f F R O M
0056200 i s n o t s p e c i f i e
0056220 d , t h e i . v . i s i
0056240 n i t i a l i z e d t o 1 .
0056260 I f n o i . v . h a s
0056300 b e e n s p e c i f i e d ,
0056320 a d u m m y i . v . i s
0056340 s u p p l i e d a n d i n
0056360 i t i a l i z e d . I f B
0056400 Y i s n o t s p e c i f i
0056420 e d , t h e i . v . i s
0056440 a u t o m a t i c a l l y i n
0056460 c r e m e n t e d b y 1 a
0056500 f t e r e a c h i t e r a t
0056520 i o n . W h e n t h e i
0056540 . v . i s d e f i n i t e l
0056560 y b e i n g i n c r e m e n
0056600 t e d , i . e . , e i t h e
0056620 r B Y i s n o t s p e c
0056640 i f i e d , o r i t s o p
0056660 e r a n d i s a p o s i t
0056700 i v e n u m b e r , t h e
0056720 i . s . t e r m i n a t e s
0056740 w h e n t h e i . v . e x
0056760 c e e d s t h e v a l u e
0057000 o f F O R M . S i m i l a
0057020 r l y , w h e n t h e i .
0057040 v . i s d e f i n i t e l y
0057060 b e i n g d e c r e m e n t
0057100 e d t h e i . s . t e r m
0057120 i n a t e s w h e n t h e
0057140 i . v . b e c o m e s l e s
0057160 s t h a n t h e v a l u e
0057200 o f F O R M ( s e e d e
0057220 s c r i p t i o n o f B Y )
0057240 . \r N o t e : F O R M i s
0057260 e v a l u a t e d o n l y
0057300 o n c e , w h e n t h e i
0057320 . s . i s f i r s t e n t
0057340 e r e d , a n d i t s v a
0057360 l u e b o u n d t o a t
0057400 e m p o r a r y v a r i a b l
0057420 e a g a i n s t w h i c h
0057440 t h e i . v . i s c h e c
0057460 k e d e a c h i n t e r a t
0057500 i o n . I f t h e u s e
0057520 r w i s h e s t o s p e c
0057540 i f y a n i . s . i n w
0057560 h i c h t h e v a l u e o
0057600 f t h e b o u n d a r y c
0057620 o n d i t i o n i s r e c o
0057640 m p u t e d e a c h i t e r
0057660 a t i o n , h e s h o u l d
0057700 u s e W H I L E o r U N
0057720 T I L i n s t e a d o f T
0057740 O . \r \r N o t e : W h e n
0057760 b o t h t h e o p e r a n d
0060000 s t o T O a n d F R O M
0060020 a r e n u m b e r s , a n
0060040 d T O ' s o p e r a n d i
0060060 s l e s s t h a n F R O M
0060100 ' s o p e r a n d , t h e
0060120 i . v . i s d e c r e m e n
0060140 t e d b y 1 a f t e r e
0060160 a c h i t e r a t i o n .
0060200 I n t h i s c a s e , t h
0060220 e i . s . t e r m i n a t e
0060240 s w h e n t h e i . v .
0060260 b e c o m e s l e s s t h a
0060300 n t h e v a l u e o f F
0060320 O R M . F o r e x a m p l
0060340 e , ( f r o m 1 0 t o 1
0060360 d o P R I N T ) p r i n t
0060400 s t h e n u m b e r s f r
0060420 o m 1 0 d o w n t o 1 .
0060440 \r B Y F O R M ( w i t h I
0060460 N / O N ) \t [ I . S . O p
0060500 e r a t o r ] \r I f I N o r
0060520 O N h a v e b e e n s p
0060540 e c i f i e d , t h e v a l
0060560 u e o f F O R M d e t e r
0060600 m i n e s t h e t a i l f
0060620 o r t h e n e x t i t e r
0060640 a t i o n , w h i c h i n
0060660 t u r n d e t e r m i n e s
0060700 t h e v a l u e f o r t h
0060720 e i . v . a s d e s c r i
0060740 b e d e a r l i e r , i . e
0060760 . , t h e n e w i . v .
0061000 i s C A R o f t h e t a
0061020 i l f o r I N , t h e t
0061040 a i l i t s e l f f o r O
0061060 N . I n c o n j u n c t i
0061100 o n w i t h I N , t h e
0061120 u s e r c a n r e f e r t
0061140 o t h e c u r r e n t t a
0061160 i l w i t h i n F O R M b
0061200 y u s i n g t h e i . v .
0061220 o r t h e o p e r a n d
0061240 f o r I N / O N , e . g . ,
0061260 ( f o r Z i n L b y
0061300 ( C D D R Z ) . . . ) o r
0061320 ( f o r Z i n L b y
0061340 ( C D D R L ) . . . ) . A
0061360 t t r a n s l a t i o n t i
0061400 m e , t h e n a m e o f
0061420 t h e i n t e r n a l v a r
0061440 i a b l e w h i c h h o l d
0061460 s t h e v a l u e o f t
0061500 h e c u r r e n t t a i l
0061520 i s s u b s t i t u t e d f
0061540 o r t h e i . v . t h r o
0061560 u g h o u t F O R M . F o r
0061600 e x a m p l e , ( f o r X
0061620 i n Y b y ( C D R ( M
0061640 E M B ' F O O ( C D R X )
0061660 ) ) c o l l e c t X ) s p
0061700 e c i f i e s t h a t a f t
0061720 e r e a c h i t e r a t i o
0061740 n , C D R o f t h e c u
0061760 r r e n t t a i l i s t o
0062000 b e s e a r c h e d f o r
0062020 t h e a t o m F O O , a
0062040 n d ( C D R o f ) t h i s
0062060 l a t t e r t a i l t o
0062100 b e u s e d f o r t h e
0062120 n e x t i t e r a t i o n . \r
0062140 \r B Y F O R M ( w i t h o u
0062160 t I N / O N ) \t [ I . S .
0062200 O p e r a t o r ] \r I f I N
0062220 o r O N h a v e n o t
0062240 b e e n u s e d , B Y s p
0062260 e c i f i e s h o w t h e
0062300 i . v . i t s e l f i s r
0062320 e s e t a t e a c h i t e
0062340 r a t i o n . I f F R O M
0062360 o r T O h a v e b e e n
0062400 s p e c i f i e d , t h e
0062420 i . v . i s k n o w n t o
0062440 b e n u m e r i c a l , s
0062460 o t h e n e w i . v . i
0062500 s c o m p u t e d b y a d
0062520 d i n g t h e v a l u e o
0062540 f F O R M ( w h i c h i s
0062560 r e e v a l u a t e d e a c
0062600 h i t e r a t i o n ) t o
0062620 t h e c u r r e n t v a l u
0062640 e o f t h e i . v . , e
0062660 . g . , ( f o r N f r o m
0062700 1 t o 1 0 b y 2 c o
0062720 l l e c t N ) m a k e s a
0062740 l i s t o f t h e f i r
0062760 s t f i v e o d d n u m b
0063000 e r s . \r I f F O R M i s
0063020 a p o s i t i v e n u m b e
0063040 r ( F O R M i t s e l f ,
0063060 n o t i t s v a l u e , w
0063100 h i c h i n g e n e r a l
0063120 C L I S P w o u l d h a v e
0063140 n o w a y o f k n o w i
0063160 n g i n a d v a n c e ) ,
0063200 t h e i . s . t e r m i n a
0063220 t e s w h e n t h e v a l
0063240 u e o f t h e i . v . e
0063260 x c e e d s t h e v a l u e
0063300 o f T O ' s o p e r a n d
0063320 . I f F O R M i s a
0063340 n e g a t i v e n u m b e r ,
0063360 t h e i . s . t e r m i n
0063400 a t e s w h e n t h e v a
0063420 l u e o f t h e i . v .
0063440 b e c o m e s l e s s t h a
0063460 n T O ' s o p e r a n d ,
0063500 e . g . , ( f o r I f r o
0063520 m N t o M b y - 2 u
0063540 n t 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
0063620 g c o n d i t i o n f o r
0063640 e a c h i t e r a t i o n d
0063660 e p e n d s o n t h e v a
0063700 l u e o f F O R M f o r
0063720 t h a t i t e r a t i o n :
0063740 i f F O R M < 0 , t h e t
0063760 e s t i s w h e t h e r t
0064000 h e i . v . i s l e s s
0064020 t h a n T O ' s o p e r a n
0064040 d , i f F O R M > 0 t h e
0064060 t e s t i s w h e t h e r
0064100 t h e i . v . e x c e e d
0064120 s T O ' s o p e r a n d ,
0064140 o t h e r w i s e i f F O R
0064160 M = 0 , t h e i . s . t e
0064200 r m i n a t e s u n c o n d i
0064220 t i o n a l l y . \r I f F R O
0064240 M o r T O h a v e n o t
0064260 b e e n s p e c i f i e d
0064300 a n d F O R M i s n o t
0064320 a n u m b e r , t h e i .
0064340 v . i s s i m p l y r e s
0064360 e t t o t h e v a l u e
0064400 o f F O R M a f t e r e a
0064420 c h i t e r a t i o n , e .
0064440 g . , ( f o r I f r o m
0064460 N b y M . . . ) i s e
0064500 q u i v a l e n t t o ( f o
0064520 r I _ N b y ( P L U S I
0064540 M ) . . . ) . \r \r A S V A
0064560 R \t [ I . S . O p e r a t
0064600 o r ] \r U s e d t o s p e c
0064620 i f y a n i t e r a t i v e
0064640 s t a t e m e n t i n v o l
0064660 v i n g m o r e t h a n o
0064700 n e i t e r a t i v e v a r
0064720 i a b l e , e . g . , ( f o
0064740 r X i n Y a s U i n
0064760 V d o . . . ) c o r r e
0065000 s p o n d s t o M A P 2 C
0065020 ( p a g e X . X X ) . T h
0065040 e i . s . t e r m i n a t e
0065060 s w h e n a n y o f t h
0065100 e t e r m i n a t i n g c o
0065120 n d i t i o n s a r e m e t
0065140 , e . g . , ( f o r X i
0065160 n Y a s I f r o m 1
0065200 t o 1 0 c o l l e c t X )
0065220 m a k e s a l i s t o f
0065240 t h e f i r s t t e n e
0065260 l e m e n t s o f Y , o r
0065300 h o w e v e r m a n y e l
0065320 e m e n t s t h e r e a r e
0065340 o n Y i f l e s s t h
0065360 a n 1 0 . \r T h e o p e r a
0065400 n d t o A S , V A R , s
0065420 p e c i f i e s t h e n e w
0065440 i . v . F o r t h e r e
0065460 m a i n d e r o f t h e i
0065500 . s . , o r u n t i l a n
0065520 o t h e r A S i s e n c o
0065540 u n t e r e d , a l l o p e
0065560 r a t o r s r e f e r t o
0065600 t h e n e w i . v . F o
0065620 r e x a m p l e , ( f o r
0065640 I f r o m 1 t o N 1 a
0065660 s J f r o m 1 t o N 2
0065700 b y 2 a s K f r o m
0065720 N 3 t o 1 b y - 1 . .
0065740 . ) t e r m i n a t e s w h
0065760 e n I e x c e e d s N 1 ,
0066000 o r J e x c e e d s N 2
0066020 , o r K b e c o m e s l
0066040 e s s t h a n 1 . A f t
0066060 e r e a c h i t e r a t i o
0066100 n , I i s i n c r e m e n
0066120 t e d b y 1 , J b y 2
0066140 , a n d K b y - 1 . \r \r
0066160 O U T O F F O R M \t [ I .
0066200 S . O p e r a t o r ] \r F o r
0066220 u s e w i t h g e n e r a
0066240 t o r s ( p a g e X . X X )
0066260 . O n e a c h i t e r a
0066300 t i o n , t h e i . v . i
0066320 s s e t t o s u c c e s s
0066340 i v e v a l u e s r e t u r
0066360 n e d b y t h e g e n e r
0066400 a t o r . T h e i . s .
0066420 t e r m i n a t e s w h e n
0066440 t h e g e n e r a t o r r u
0066460 n s o u t . \r \r 9 . 8 . 3
0066500 \t C o n d i t i o n I . s . o
0066520 p r s \r \r W H E N F O R M
0066540 \t [ I . S . O p e r a t o r ]
0066560 \r P r o v i d e s a w a y
0066600 o f e x c e p t i n g c e r
0066620 t a i n i t e r a t i o n s .
0066640 F o r e x a m p l e , (
0066660 f o r X i n Y c o l l e
0066700 c t X w h e n ( N U M B E
0066720 R P X ) ) c o l l e c t s
0066740 o n l y t h e e l e m e n t
0066760 s o f Y t h a t a r e
0067000 n u m b e r s . \r \r U N L E S S
0067020 F O R M \t [ I . S . O p
0067040 e r a t o r ] \r S a m e a s
0067060 W H E N e x c e p t f o r
0067100 t h e d i f f e r e n c e i
0067120 n s i g n , i . e . , W H
0067140 E N Z i s t h e s a m e
0067160 a s U N L E S S ( N O T
0067200 Z ) . \r \r W H I L E F O R M
0067220 \t [ I . S . O p e r a t o r
0067240 ] \r P r o v i d e s a w a y
0067260 o f t e r m i n a t i n g
0067300 t h e i . s . W H I L E
0067320 F O R M e v a l u a t e s F
0067340 O R M b e f o r e e a c h
0067360 i t e r a t i o n , a n d i
0067400 f t h e v a l u e i s N
0067420 I L , e x i t s . \r \r U N T I
0067440 L F O R M \t [ I . S . O
0067460 p e r a t o r ] \r S a m e a s
0067500 W H I L E e x c e p t f o
0067520 r d i f f e r e n c e i n
0067540 s i g n , i . e . , W H I L
0067560 E X i s e q u i v a l e n
0067600 t t o U N T I L ( N O T
0067620 X ) . \r \r U N T I L N ( N
0067640 a n u m b e r ) \t [ I . S
0067660 . O p e r a t o r ] \r E q u i
0067700 v a l e n t t o U N T I L
0067720 I . V . > N . \r \r R E P E A
0067740 T W H I L E F O R M \t [ I
0067760 . S . O p e r a t o r ] \r S a
0070000 m e a s W H I L E e x c e
0070020 p t t h e t e s t i s p
0070040 e r f o r m e d a f t e r t
0070060 h e e v a l u t i o n o f
0070100 t h e b o d y , b u t b e
0070120 f o r e t h e i . v . i s
0070140 r e s e t f o r t h e n
0070160 e x t i t e r a t i o n . \r \r
0070200 R E P E A T U N T I L F O R M
0070220 \t [ I . S . O p e r a t o
0070240 r ] \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
0070300 t i s p e r f o r m e d a
0070320 f t e r t h e e v a l u a t
0070340 i o n o f t h e b o d y .
0070360 \r \r R E P E A T U N T I L N
0070400 ( N a n u m b e r ) \t [
0070420 I . S . O p e r a t o r ] \r E
0070440 q u i v a l e n t t o R E P
0070460 E A T U N T I L I . V . >
0070500 N . \r \r 9 . 8 . 4 \t O t h e
0070520 r I . s . o p r s \r \r F I R S
0070540 T F O R M \t [ I . S . O
0070560 p e r a t o r ] \r F O R M i s
0070600 e v a l u a t e d o n c e
0070620 b e f o r e t h e f i r s t
0070640 i t e r a t i o n , e . g .
0070660 , ( f o r X Y Z i n
0070700 L f i r s t ( F O O Y Z
0070720 ) . . . ) , a n d F O O
0070740 c o u l d b e u s e d t o
0070760 i n i t i a l i z e Y a n
0071000 d Z . \r \r F I N A L L Y F O
0071020 R M \t [ I . S . O p e r a
0071040 t o r ] \r F O R M i s e v a
0071060 l u a t e d a f t e r t h e
0071100 i . s . t e r m i n a t e s
0071120 . F o r e x a m p l e ,
0071140 ( f o r X i n L b i n d
0071160 Y _ 0 d o ( i f ( A T O
0071200 M X ) t h e n ( S E T Q
0071220 Y ( P L U S Y 1 ) ) ) f
0071240 i n a l l y ( R E T U R N Y
0071260 ) ) w i l l r e t u r n t
0071300 h e n u m b e r o f a t o
0071320 m s i n L . \r \r E A C H T I
0071340 M E F O R M \t [ I . S .
0071360 O p e r a t o r ] \r F O R M i
0071400 s e v a l u a t e d a t t
0071420 h e b e g i n n i n g o f
0071440 e a c h i t e r a t i o n b
0071460 e f o r e , a n d r e g a r
0071500 d l e s s o f , a n y t e
0071520 s t i n g . F o r e x a m
0071540 p l e , c o n s i d e r , \r (
0071560 f o r I f r o m 1 t o
0071600 N \r d o ( . . . ( F
0071620 O O I ) . . . ) \r u
0071640 n l e s s ( . . . ( F O O
0071660 I ) . . . ) \r u n t i
0071700 l ( . . . ( F O O I ) .
0071720 . . ) ) \r T h e u s e r m i
0071740 g h t w a n t t o s e t
0071760 a t e m p o r a r y v a r i
0072000 a b l e t o t h e v a l u
0072020 e o f ( F O O I ) i n
0072040 o r d e r t o a v o i d c
0072060 o m p u t i n g i t t h r e
0072100 e t i m e s e a c h i t e
0072120 r a 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
0072160 g t h e t r a n s l a t i o
0072200 n , h e w o u l d n o t
0072220 k n o w w h e t h e r t o
0072240 p u t t h e a s s i g n m e
0072260 n t i n t h e o p e r a n
0072300 d t o D O , U N L E S S ,
0072320 o r U N T I L , i . e . ,
0072340 w h i c h o n e w o u l d
0072360 b e e x e c u t e d f i r
0072400 s t . H e c a n a v o i
0072420 d t h i s p r o b l e m b
0072440 y s i m p l y w r i t i n g
0072460 E A C H T I M E ( S E T Q
0072500 J ( F O O I ) ) . \r \r D E C
0072520 L A R E : D E C L \t [ I .
0072540 S . O p e r a t o r ] \r I n s
0072560 e r t s t h e f o r m ( D
0072600 E C L A R E D E C L ) i m m
0072620 e d i a t e l y f o l l o w i
0072640 n g t h e P R O G v a r i
0072660 a b l e l i s t i n t h e
0072700 t r a n s l a t i o n , o r
0072720 , i n t h e c a s e t h
0072740 a t t h e t r a n s l a t i
0072760 o n i s a m a p p i n g
0073000 f u n c t i o n r a t h e r
0073020 t h a n a P R O G , i m m
0073040 e d i a t e l y f o l l o w i
0073060 n g t h e a r g u m e n t
0073100 l i s t o f t h e l a m b
0073120 d a e x p r e s s i o n i n
0073140 t h e t r a n s l a t i o n
0073160 . T h i s c a n b e u
0073200 s e d t o d e c l a r e v
0073220 a r i a b l e s b o u n d i
0073240 n t h e i t e r a t i v e
0073260 s t a t e m e n t t o b e
0073300 c o m p i l e d a s l o c a
0073320 l o r s p e c i a l v a r
0073340 i a b l e s ( s e e p a g e
0073360 X . X X ) . F o r e x a
0073400 m p l e ( f o r X i n Y
0073420 d e c l a r e : ( L O C A L
0073440 V A R S X ) . . . ) . S
0073460 e v e r a l D E C L A R E : s
0073500 c a n a p p p e a r i n
0073520 t h e s a m e i . s . ; t
0073540 h e d e c l a r a t i o n s
0073560 a r e i n s e r t e d i n
0073600 t h e o r d e r t h e y a
0073620 p p e a r . \r \r D E C L A R E
0073640 D E C L \t [ I . S . O p e
0073660 r a t o r ] \r S a m e a s D
0073700 E C L A R E : . \r N o t e t h
0073720 a t s i n c e D E C L A R E
0073740 i s a l s o t h e n a m
0073760 e o f a f u n c t i o n ,
0074000 D E C L A R E c a n n o t
0074020 b e u s e d a s a n i .
0074040 s . o p e r a t o r w h e n
0074060 i t a p p e a r s a s C
0074100 A R o f a f o r m , i .
0074120 e . a s t h e f i r s t
0074140 i . s . o p e r a t o r i n
0074160 a n i t e r a t i v e s t
0074200 a t e m e n t . H o w e v e
0074220 r , d e c l a r e ( l o w e
0074240 r - c a s e v e r s i o n )
0074260 c a n b e t h e f i r s t
0074300 i . s . o p e r a t o r . \r
0074320 \r O R I G I N A L I . S . O P
0074340 R O P E R A N D \t [ I . S
0074360 . O p e r a t o r ] \r I . S .
0074400 O P R w i l l b e t r a n
0074420 s l a t e d u s i n g i t s
0074440 o r i g i n a l , b u i l t
0074460 - i n i n t e r p r e t a t i
0074500 o n , i n d e p e n d e n t
0074520 o f a n y u s e r d e f i
0074540 n e d i . s . o p e r a t o
0074560 r s . S e e p a g e X .
0074600 X X . \r \r T h e r e a r e a
0074620 l s o a n u m b e r o f
0074640 i . s . o p r s t h a t m a
0074660 k e i t e a s i e r t o
0074700 c r e a t e i t e r a t i v e
0074720 s t a t e m e n t s t h a t
0074740 u s e t h e c l o c k ,
0074760 l o o p i n g f o r a g i
0075000 v e n p e r i o d o f t i
0075020 m e . S e e t i m e r s ,
0075040 p a g e X . X X . \r 9 . 8 .
0075060 5 \t M i s c e l l a n e o u
0075100 s H i n t s o n I . S . O
0075120 p r s \r \r \t 267 \t L o w e r c a s
0075140 e v e r s i o n s o f a l
0075160 l i . s . o p e r a t o r s
0075200 a r e e q u i v a l e n t
0075220 t o t h e u p p e r c a s e
0075240 , e . g . , ( f o r X i
0075260 n Y . . . ) i s e q u i
0075300 v a l e n t t o ( F O R X
0075320 I N Y . . . ) . \r \t 267 \t E
0075340 a c h i . s . o p e r a t o
0075360 r i s o f l o w e r p r
0075400 e c e d e n c e t h a n a l
0075420 l I n t e r l i s p f o r m
0075440 s , s o p a r e n t h e s e
0075460 s a r o u n d t h e o p e
0075500 r a n d s c a n b e o m i
0075520 t t e d , a n d w i l l b
0075540 e s u p p l i e d w h e r e
0075560 n e c e s s a r y , e . g .
0075600 , B I N D ( X Y Z ) c
0075620 a n b e w r i t t e n B I
0075640 N D X Y Z , O L D ( X
0075660 _ F O R M ) a s O L D X _
0075700 F O R M , W H E N ( N U M B
0075720 E R P X ) a s W H E N N
0075740 U M B E R P X , e t c . \r \t
0075760 267 \t R E T U R N o r G O m
0076000 a y b e u s e d i n a n
0076020 y o p e r a n d . ( I n
0076040 t h i s c a s e , t h e t
0076060 r a n s l a t i o n o f t h
0076100 e i t e r a t i v e s t a t
0076120 e m e n t w i l l a l w a y
0076140 s b e i n t h e f o r m
0076160 o f a P R O G , n e v e
0076200 r a m a p p i n g f u n c
0076220 t i o n . ) R E T U R N m
0076240 e a n s r e t u r n f r o m
0076260 t h e i . s . ( w i t h
0076300 t h e i n d i c a t e d v a
0076320 l u e ) , n o t f r o m t
0076340 h e f u n c t i o n i n w
0076360 h i c h t h e i . s a p p
0076400 e a r s . G O r e f e r s
0076420 t o a l a b e l e l s e
0076440 w h e r e i n t h e f u n
0076460 c t i o n i n w h i c h t
0076500 h e i . s . a p p e a r s ,
0076520 e x c e p t f o r t h e
0076540 l a b e l s $ $ L P , $ $ I
0076560 T E R A T E , a n d $ $ O U
0076600 T w h i c h a r e r e s e
0076620 r v e d , a s d e s c r i b
0076640 e d b e l o w . \r \t 267 \t I n
0076660 t h e c a s e o f F I R S
0076700 T , F I N A L L Y , E A C H
0076720 T I M E , D E C L A R E : o
0076740 r o n e o f t h e i . s
0076760 . t y p e s , e . g . , D O
0077000 , C O L L E C T , S U M ,
0077020 e t c . , t h e o p e r a n
0077040 d c a n c o n s i s t o f
0077060 m o r e t h a n o n e f
0077100 o r m , e . g . , C O L L E
0077120 C T ( P R I N T ( C A R X
0077140 ) ) ( C D R X ) , i n w
0077160 h i c h c a s e a P R O G
0077200 N i s s u p p l i e d . \r \t
0077220 267 \t E a c h o p e r a n d c
0077240 a n b e t h e n a m e o
0077260 f a f u n c t i o n , i n
0077300 w h i c h c a s e i t i
0077320 s a p p l i e d t o t h e
0077340 ( l a s t ) i . v . , e .
0077360 g . , ( f o r X i n Y
0077400 d o P R I N T w h e n N U
0077420 M B E R P ) i s t h e s a
0077440 m e a s ( f o r X i n
0077460 Y d o ( P R I N T X ) w
0077500 h e n ( N U M B E R P X ) )
0077520 . N o t e t h a t t h e
0077540 i . v . n e e d n o t b
0077560 e e x p l i c i t l y s p e
0077600 c i f i e d , e . g . , ( i
0077620 n Y d o P R I N T w h e
0077640 n N U M B E R P ) w i l l
0077660 w o r k . \r F o r i . s . t y
0077700 p e s , e . g . , D O , C
0077720 O L L E C T , J O I N , t h
0077740 e f u n c t i o n i s a l
0077760 w a y s a p p l i e d t o
0100000 t h e f i r s t i . v . i
0100020 n t h e i . s . , w h e t
0100040 h e r e x p l i c i t y n a
0100060 m e d o r n o t . F o r
0100100 e x a m p l e , ( i n Y
0100120 a s I f r o m 1 t o 1
0100140 0 d o P R I N T ) p r i n
0100160 t s e l e m e n t s o n Y
0100200 , n o t i n t e g e r s b
0100220 e t w e e n 1 a n d 1 0 .
0100240 \r N o t e t h a t t h i s
0100260 f e a t u r e d o e s n o t
0100300 m a k e m u c h s e n s e
0100320 f o r F O R , O L D , B
0100340 I N D , I N , o r O N ,
0100360 s i n c e t h e y " o p e r
0100400 a t e " b e f o r e t h e
0100420 l o o p s t a r t s , w h e
0100440 n t h e i . v . m a y n
0100460 o t e v e n b e b o u n d
0100500 . \r I n t h e c a s e o f
0100520 B Y i n c o n j u n c t i
0100540 o n w i t h I N , t h e
0100560 f u n c t i o n i s a p p l
0100600 i e d t o t h e c u r r e
0100620 n t t a i l e . g . , ( f
0100640 o r X i n Y b y C D D
0100660 R . . . ) i s t h e s a
0100700 m e a s ( f o r X i n
0100720 Y b y ( C D D R X ) . .
0100740 . ) . \r \t 267 \t W h i l e t h e
0100760 e x a c t f o r m o f t
0101000 h e t r a n s l a t i o n o
0101020 f a n i t e r a t i v e s
0101040 t a t e m e n t d e p e n d s
0101060 o n w h i c h o p e r a t
0101100 o r s a r e p r e s e n t ,
0101120 a P R O G w i l l a l w
0101140 a y s b e u s e d w h e n
0101160 e v e r t h e i . s . s p
0101200 e c i f i e s d u m m y v a
0101220 r i a b l e s , i . e . , i
0101240 f a B I N D o p e r a t o
0101260 r a p p e a r s , o r t h
0101300 e r e i s m o r e t h a n
0101320 o n e v a r i a b l e s p
0101340 e c i f i e d b y a F O R
0101360 o p e r a t o r , o r a
0101400 G O , R E T U R N , o r a
0101420 r e f e r e n c e t o t h
0101440 e v a r i a b l e $ $ V A L
0101460 a p p e a r s i n a n y
0101500 o f t h e o p e r a n d s
0101520 . W h e n a P R O G i s
0101540 u s e d , t h e f o r m
0101560 o f t h e t r a n s l a t i
0101600 o n i s : \r ( P R O G V A R
0101620 I A B L E S \r { i n
0101640 i t i a l i z e } \r $ $ L P
0101660 { e a c h t i m e } \r
0101700 { t e s t } \r { b
0101720 o d y } \r $ $ I T E R A T E \r
0101740 { a f t e r t e s t }
0101760 \r { 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 }
0102040 \r ( R E T U R N $
0102060 $ V A L ) ) \r w h e r e { t e
0102100 s t } c o r r e s p o n d s
0102120 t o t h a t p o r t i o n
0102140 o f t h e l o o p t h a t
0102160 t e s t s f o r t e r m i
0102200 n a t i o n a n d a l s o
0102220 f o r t h o s e i t e r a t
0102240 i o n s f o r w h i c h {
0102260 b o d y } i s n o t g o i
0102300 n g t o b e e x e c u t e
0102320 d , ( a s i n d i c a t e d
0102340 b y a W H E N o r U N
0102360 L E S S ) ; { b o d y } c o
0102400 r r e s p o n d s t o t h e
0102420 o p e r a n d o f t h e
0102440 i . s . t y p e , e . g . ,
0102460 D O , C O L L E C T , e t c
0102500 . ; { a f t e r t e s t } c
0102520 o r r e s p o n d s t o t h
0102540 o s e t e s t s f o r t e
0102560 r m i n a t i o n s p e c i f
0102600 i e d b y R E P E A T W H I
0102620 L E o r R E P E A T U N T I
0102640 L ; a n d { u p d a t e }
0102660 c o r r e s p o n d s t o t
0102700 h a t p a r t t h a t r e
0102720 s e t s t h e t a i l , i
0102740 n c r e m e n t s t h e c o
0102760 u n t e r , e t c . i n p
0103000 r e p a r a t i o n f o r t
0103020 h e n e x t i t e r a t i o
0103040 n . { i n i t i a l i z e }
0103060 , { f i n a l i z e } , a n
0103100 d { e a c h t i m e } c o r
0103120 r e s p o n d t o t h e o
0103140 p e r a n d s o f F I R S T
0103160 , F I N A L L Y , a n d E
0103200 A C H T I M E , i f a n y .
0103220 \r N o t e t h a t s i n c e
0103240 { b o d y } a l w a y s a
0103260 p p e a r s a t t h e t o
0103300 p l e v e l o f t h e P
0103320 R O G , t h e u s e r c a
0103340 n i n s e r t l a b e l s
0103360 i n { b o d y } , a n d G
0103400 O t o t h e m f r o m w
0103420 i t h i n { b o d y } o r
0103440 f r o m o t h e r i . s .
0103460 o p e r a n d s , e . g . ,
0103500 ( f o r X i n Y f i r s
0103520 t ( G O A ) d o ( F O O
0103540 ) A ( F I E ) ) . H o w
0103560 e v e r , s i n c e { b o d
0103600 y } i s d w i m i f i e d
0103620 a s a l i s t o f f o r
0103640 m s , t h e l a b e l ( s )
0103660 s h o u l d b e a d d e d
0103700 t o t h e d u m m y v a
0103720 r i a b l e s f o r t h e
0103740 i t e r a t i v e s t a t e m
0103760 e n t i n o r d e r t o
0104000 p r e v e n t t h e i r b e
0104020 i n g d w i m i f i e d a n
0104040 d p o s s i b l y " c o r r
0104060 e c t e d " , e . g . , ( f
0104100 o r X i n Y b i n d A
0104120 f 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
0104200 l s o G O t o $ $ L P ,
0104220 $ $ I T E R A T E , o r $ $
0104240 O U T , o r e x p l i c i t
0104260 l y s e t $ $ V A L . \r 9 .
0104300 8 . 6 \t E r r o r s i n
0104320 I t e r a t i v e S t a t e m
0104340 e n t s \r \r A n e r r o r w
0104360 i l l b e g e n e r a t e d
0104400 a n d a n a p p r o p r i
0104420 a t e d i a g n o s t i c p
0104440 r i n t e d i f a n y o f
0104460 t h e f o l l o w i n g c
0104500 o n d i t i o n s h o l d : \r
0104520 ( 1 ) O p e r a t o r w i
0104540 t h n u l l o p e r a n d ,
0104560 i . e . , t w o a d j a c
0104600 e n t o p e r a t o r s , a
0104620 s i n ( f o r X i n Y
0104640 u n t i l d o . . . ) \r (
0104660 2 ) O p e r a n d c o n s
0104700 i s t i n g o f m o r e t
0104720 h a n o n e f o r m ( e x
0104740 c e p t a s o p e r a n d
0104760 t o F I R S T , F I N A L L
0105000 Y , o r o n e o f t h e
0105020 i . s . t y p e s ) , e . g
0105040 . , ( f o r X i n Y (
0105060 P R I N T X ) c o l l e c t
0105100 . . . ) . \r ( 3 ) I N ,
0105120 O N , F R O M , T O , o r
0105140 B Y a p p e a r t w i c e
0105160 i n s a m e i . s . \r ( 4
0105200 ) B o t h I N a n d O
0105220 N u s e d o n s a m e i
0105240 . v . \r ( 5 ) F R O M o r
0105260 T O u s e d w i t h I N
0105300 o r O N o n s a m e i
0105320 . v . \r ( 6 ) M o r e t h
0105340 a n o n e i . s . t y p e ,
0105360 e . g . , a D O a n d
0105400 a S U M . \r I n 3 , 4 ,
0105420 o r 5 , a n e r r o r i
0105440 s n o t g e n e r a t e d
0105460 i f a n i n t e r v e n i n
0105500 g A S o c c u r s . \r I f
0105520 a n e r r o r o c c u r s ,
0105540 t h e i . s . i s l e f
0105560 t u n c h a n g e d . \r I f
0105600 n o D O , C O L L E C T ,
0105620 J O I N o r a n y o f t
0105640 h e o t h e r i . s . t y p
0105660 e s 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
0105720 s t a t t e m p t t o f i
0105740 n d a n o p e r a n d c o
0105760 n s i s t i n g o f m o r e
0106000 t h a n o n e f o r m ,
0106020 e . g . , ( f o r X i n
0106040 Y ( P R I N T X ) w h e n
0106060 A T O M X . . . ) , a n
0106100 d i n t h i s c a s e w
0106120 i l l i n s e r t a D O
0106140 a f t e r t h e f i r s t
0106160 f o r m . ( I n t h i s
0106200 c a s e , c o n d i t i o n
0106220 2 i s n o t c o n s i d e
0106240 r e d t o b e m e t , a
0106260 n d a n e r r o r i s n
0106300 o t g e n e r a t e d . )
0106320 I f C L I S P c a n n o t
0106340 f i n d s u c h a n o p e
0106360 r a n d , a n d n o W H I
0106400 L E o r U N T I L a p p e
0106420 a r s i n t h e i . s . ,
0106440 a w a r n i n g m e s s a
0106460 g e i s p r i n t e d : N
0106500 O D O , C O L L E C T , O
0106520 R J O I N : f o l l o w e d
0106540 b y t h e i . s . \r S i m
0106560 i l a r l y , i f n o t e
0106600 r m i n a t i n g c o n d i t
0106620 i o n i s d e t e c t e d ,
0106640 i . e . , n o I N , O N
0106660 , W H I L E , U N T I L ,
0106700 T O , o r a R E T U R N
0106720 o r G O , a w a r n i n g
0106740 m e s s a g e i s p r i n
0106760 t e d : P O S S I B L E N O
0107000 N - T E R M I N A T I N G I T
0107020 E R A T I V E S T A T E M E N
0107040 T : f o l l o w e d b y t
0107060 h e i t e r a t i v e s t a
0107100 t e m e n t . H o w e v e r
0107120 , s i n c e t h e u s e r
0107140 m a y b e p l a n n i n g
0107160 t o t e r m i n a t e t h
0107200 e i . s . v i a a n e r
0107220 r o r , c o n t r o l - E ,
0107240 o r a R E T F R O M f r o
0107260 m a l o w e r f u n c t i
0107300 o n , t h e i . s . i s
0107320 s t i l l t r a n s l a t e d
0107340 . N o t e : T h e e r
0107360 r o r m e s s a g e i s n
0107400 o t p r i n t e d i f t h
0107420 e v a l u e o f C L I S P
0107440 I . S . G A G i s T ( i n
0107460 i t i a l l y N I L ) . \r 9 .
0107500 8 . 7 \t D e f i n i n g N
0107520 e w I t e r a t i v e S t a
0107540 t e m e n t O p e r a t o r s
0107560 \r \r T h e f o l l o w i n g
0107600 f u n c t i o n i s a v a i
0107620 l a b l e f o r d e f i n i
0107640 n g n e w o r r e d e f i
0107660 n i n g e x i s t i n g i t
0107700 e r a t i v e s t a t e m e n
0107720 t o p e r a t o r s : \r ( I .
0107740 S . O P R N A M E F O R M
0107760 O T H E R S E V A L F L G )
0110000 \t [ F u n c t i o n ] \r N A M
0110020 E i s t h e n a m e o f
0110040 t h e n e w i . s . o p r
0110060 . I f F O R M i s a
0110100 l i s t , N A M E w i l l
0110120 b e a n e w i . s . t y p
0110140 e ( s e e p a g e X . X X
0110160 ) , a n d F O R M i t s
0110200 b o d y . \r O T H E R S i s
0110220 a n ( o p t i o n a l ) l i
0110240 s t o f a d d i t i o n a l
0110260 i . s . o p e r a t o r s
0110300 a n d o p e r a n d s w h i
0110320 c h w i l l b e a d d e d
0110340 t o t h e i . s . a t
0110360 t h e p l a c e w h e r e
0110400 N A M E a p p e a r s . I
0110420 f F O R M i s N I L , N
0110440 A M E i s a n e w i . s
0110460 . o p r d e f i n e d e n t
0110500 i r e l y b y O T H E R S .
0110520 \r I n b o t h F O R M a n
0110540 d O T H E R S , t h e a t
0110560 o m $ $ V A L c a n b e
0110600 u s e d t o r e f e r e n c
0110620 e t h e v a l u e t o b
0110640 e r e t u r n e d b y t h
0110660 e i . s . , I . V . t o
0110700 r e f e r e n c e t h e c u
0110720 r r e n t i . v . , a n d
0110740 B O D Y t o r e f e r e n c
0110760 e N A M E ' s o p e r a n d
0111000 . I n o t h e r w o r d
0111020 s , t h e c u r r e n t i
0111040 . v . w i l l b e s u b s
0111060 t i t u t e d f o r a l l
0111100 i n s t a n c e s o f I . V
0111120 . a n d N A M E ' s o p e
0111140 r a n d w i l l b e s u b
0111160 s t i t u t e d f o r a l l
0111200 i n s t a n c e s o f B O
0111220 D Y t h r o u g h o u t F O
0111240 R M a n d O T H E R S . \r I
0111260 f E V A L F L G i s T ,
0111300 F O R M a n d O T H E R S
0111320 a r e e v a l u a t e d a t
0111340 t r a n s l a t i o n t i m
0111360 e , a n d t h e i r v a l
0111400 u e s u s e d a s d e s c
0111420 r i b e d a b o v e . A
0111440 d u m m y v a r i a b l e f
0111460 o r u s e i n t r a n s l
0111500 a t i o n t h a t d o e s
0111520 n o t c l a s h w i t h a
0111540 d u m m y v a r i a b l e
0111560 a l r e a d y u s e d b y
0111600 s o m e o t h e r i . s .
0111620 o p e r a t o r s c a n b e
0111640 o b t a i n e d b y c a l
0111660 l i n g ( G E T D U M M Y V A
0111700 R ) . ( G E T D U M M Y V A R
0111720 T ) w i l l r e t u r n
0111740 a d u m m y v a r i a b l e
0111760 a n d a l s o i n s u r e
0112000 t h a t i t i s b o u n
0112020 d a s a P R O G v a r i
0112040 a b l e i n t h e t r a n
0112060 s l a t i o n . \r I f N A M E
0112100 w a s p r e v i o u s l y
0112120 a n i . s . o p r a n d i
0112140 s b e i n g r e d e f i n e
0112160 d , t h e m e s s a g e (
0112200 N A M E R E D E F I N E D )
0112220 w i l l b e p r i n t e d
0112240 ( u n l e s s D F N F L G = T
0112260 ) , a n d a l l e x p r e
0112300 s s i o n s u s i n g t h e
0112320 i . s . o p r N A M E t h
0112340 a t h a v e b e e n t r a
0112360 n s l a t e d w i l l h a v
0112400 e t h e i r t r a n s l a t
0112420 i o n s d i s c a r d e d . \r
0112440 \r T h e f o l l o w i n g a
0112460 r e s o m e e x a m p l e s
0112500 o f h o w I . S . O P R
0112520 c o u l d b e c a l l e d
0112540 t o d e f i n e s o m e e
0112560 x i s t i n g i . s . o p r s
0112600 , a n d c r e a t e s o m
0112620 e n e w o n e s : \r \t C O L
0112640 L E C T \t \r ( I . S . O P R '
0112660 C O L L E C T \r
0112700 ' ( S E T Q $ $ V A L ( N
0112720 C O N C 1 $ $ V A L B O D Y
0112740 ) ) ) \r \t S U M \t \r ( I . S . O
0112760 P R ' S U M \r
0113000 ' ( $ $ V A L _ $ $ V A L + B
0113020 O D Y ) \r ' (
0113040 F I R S T $ $ V A L _ 0 ) ) \r
0113060 N o t e : $ $ V A L + B O D
0113100 Y i s u s e d i n s t e a
0113120 d o f ( I P L U S $ $ V A
0113140 L B O D Y ) s o t h a t
0113160 t h e c h o i c e o f f u
0113200 n c t i o n u s e d i n t
0113220 h e t r a n s l a t i o n ,
0113240 i . e . , I P L U S , F P L
0113260 U S , o r P L U S , w i l
0113300 l b e d e t e r m i n e d
0113320 b y t h e d e c l a r a t i
0113340 o n s t h e n i n e f f e
0113360 c t . \r \t N E V E R \t \r ( I . S
0113400 . O P R ' N E V E R \r
0113420 ' ( i f B O D Y t
0113440 h e n $ $ V A L _ N I L ( G
0113460 O $ $ O U T ) ) ) \r N o t e :
0113500 ( i f B O D Y t h e n
0113520 ( R E T U R N N I L ) ) w o
0113540 u l d e x i t f r o m t h
0113560 e i . s . i m m e d i a t e
0113600 l y a n d t h e r e f o r e
0113620 n o t e x e c u t e t h e
0113640 o p e r a t i o n s s p e c
0113660 i f i e d v i a a F I N A
0113700 L L Y ( i f a n y ) . \r \t T
0113720 H E 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
0114000 n $ $ V A L _ I . V . ( G O
0114020 $ $ O U T ) ) ) \r \t R C O L L
0114040 E C T \t T o d e f i n e R C
0114060 O L L E C T , a v e r s i o
0114100 n o f C O L L E C T w h i
0114120 c h u s e s C O N S i n s
0114140 t e a d o f N C O N C 1 a
0114160 n d t h e n r e v e r s e s
0114200 t h e l i s t o f v a l
0114220 u e s : \r ( I . S . O P R ' R
0114240 C O L L E C T \r
0114260 ' ( $ $ V A L _ ( C O N S B
0114300 O D Y $ $ V A L ) ) \r
0114320 ' ( F I N A L L Y (
0114340 R E T U R N ( D R E V E R S E
0114360 $ $ V A L ) ) ) ] \r \t T C O L
0114400 L E C T \t T o d e f i n e T
0114420 C O L L E C T , a v e r s i
0114440 o n o f C O L L E C T w h
0114460 i c h u s e s T C O N C : \r
0114500 ( I . S . O P R ' T C O L L E
0114520 C T \r ' ( T C
0114540 O N 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
0114620 N A L L Y ( R E T U R N ( C
0114640 A R $ $ V A L ) ) ) ] \r \t P R
0114660 O D U C T \t \r ( I . S . O P R
0114700 ' P R O D U C T \r
0114720 ' ( $ $ V A L _ $ $ V A L *
0114740 B O D Y ) \r '
0114760 ( F I R S T $ $ V A L _ 1 ) ]
0115000 \r \t U P T O \t T o d e f i n e
0115020 U P T O , a v e r s i o n
0115040 o f T O w h o s e o p e
0115060 r a n d i s e v a l u a t e
0115100 d o n l y o n c e : \r ( I .
0115120 S . O P R ' U P T O \r
0115140 N I L \r
0115160 ' ( B I N D $ $ F O O _ B
0115200 O D Y T O $ $ F O O ) ] \r \t
0115220 T O \t T o r e d e f i n e T
0115240 O s o t h a t i n s t e a
0115260 d o f r e c o m p u t i n g
0115300 F O R M e a c h i t e r a
0115320 t i o n , a v a r i a b l e
0115340 i s b o u n d t o t h e
0115360 v a l u e o f F O R M ,
0115400 a n d t h e n t h a t v a
0115420 r i a b l e i s u s e d : \r
0115440 ( I . S . O P R ' T O \r
0115460 N I L \r
0115500 ' ( B I N D $ $ E N D
0115520 F I R S T $ $ E N D _ B O D Y
0115540 O R I G I N A L T O $ $ E
0115560 N D ) ] \r N o t e t h e u s
0115600 e o f O R I G I N A L t o
0115620 r e d e f i n e T O i n
0115640 t e r m s o f i t s o r i
0115660 g i 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
0115720 n t e n d e d f o r u s e
0115740 i n r e d e f i n i n g b u
0115760 i l 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
0116020 f i n i t i o n s a r e n o
0116040 t a c c e s s i b l e , a n
0116060 d h e n c e n o t d i r e
0116100 c t l y m o d i f i a b l e .
0116120 T h u s i f t h e o p
0116140 e r a t o r h a d b e e n
0116160 d e f i n e d b y t h e u
0116200 s e r v i a I . S . O P R ,
0116220 O R I G I N A L w o u l d
0116240 n o t o b t a i n i t s o
0116260 r i g i n a l d e f i n i t i
0116300 o n . I n t h i s c a s
0116320 e , o n e p r e s u m a b l
0116340 y w o u l d s i m p l y m
0116360 o d i f y t h e i . s . o p
0116400 r d e f i n i t i o n . \r I .
0116420 S . O P R c a n a l s o b
0116440 e u s e d t o d e f i n e
0116460 s y n o n y m s f o r a l
0116500 r e a d y d e f i n e d i .
0116520 s . o p e r a t o r s b y
0116540 c a l l i n g I . S . O P R
0116560 w i t h F O R M a n a t o
0116600 m , e . g . , ( I . S . O P
0116620 R ' W H E R E ' W H E N )
0116640 m a k e s W H E R E b e t
0116660 h e s a m e a s W H E N .
0116700 S i m i l a r l y , f o l
0116720 l o w i n g ( I . S . O P R
0116740 ' I S T H E R E ' T H E R E I
0116760 S ) , o n e c a n w r i t
0117000 e ( I S T H E R E A T O M
0117020 I N Y ) , a n d f o l l o
0117040 w i n g ( I . S . O P R ' F
0117060 I N D ' F O R ) a n d ( I
0117100 . S . O P R ' S U C H T H A T
0117120 ' T H E R E I S ) , o n e
0117140 c a n w r i t e ( f i n d
0117160 X i n Y s u c h t h a t
0117200 X m e m b e r Z ) . I n
0117220 t h e c u r r e n t s y s
0117240 t e m , W H E R E i s s y
0117260 n o n y m o u s w i t h W H
0117300 E N , S U C H T H A T a n d
0117320 I S T H E R E w i t h T H
0117340 E R E I S , F I N D w i t h
0117360 F O R , a n d T H R U w
0117400 i t h T O . \r I f F O R M
0117420 i s t h e a t o m M O D I
0117440 F I E R , t h e n N A M E
0117460 i s d e f i n e d a s a n
0117500 i . s . o p r w h i c h c
0117520 a n i m m e d i a t e l y f
0117540 o l l o w a n o t h e r i .
0117560 s . o p e r a t o r ( i . e
0117600 . , a n e r r o r w i l l
0117620 n o t b e g e n e r a t e
0117640 d , a s d e s c r i b e d
0117660 p r e v i o u s l y ) . N A
0117700 M E w i l l n o t t e r m
0117720 i n a t e t h e s c o p e
0117740 o f t h e p r e v i o u s
0117760 o p e r a t o r , a n d w i
0120000 l l b e s t r i p p e d o
0120020 f f w h e n D W I M I F Y
0120040 i s c a l l e d o n i t s
0120060 o p e r a n d . O L D i
0120100 s a n e x a m p l e o f
0120120 a M O D I F I E R t y p e
0120140 o f o p e r a t o r . T h
0120160 e M O D I F I E R f e a t u
0120200 r e a l l o w s t h e u s
0120220 e r t o d e f i n e i . s
0120240 . o p e r a t o r s s i m i
0120260 l a r t o O L D , f o r
0120300 u s e i n c o n j u n c t i
0120320 o n w i t h s o m e o t h
0120340 e r u s e r d e f i n e d
0120360 i . s . o p r w h i c h w i
0120400 l l p r o d u c e t h e a
0120420 p p r o p r i a t e t r a n s
0120440 l a t i o n . \r T h e f i l e
0120460 p a c k a g e c o m m a n d
0120500 I . S . O P R S ( p a g e
0120520 X . X X ) w i l l d u m p
0120540 t h e d e f i n i t i o n o
0120560 f i . s . o p r s . ( I .
0120600 S . O P R S P R O D U C T U
0120620 P T O ) a s a f i l e p
0120640 a c k a g e c o m m a n d w
0120660 i l l p r i n t s u i t a b
0120700 l e e x p r e s s i o n s s
0120720 o t h a t t h e s e i t e
0120740 r a t i v e s t a t e m e n t
0120760 o p e r a t o r s w i l l
0121000 b e ( r e ) d e f i n e d w
0121020 h e n t h e f i l e i s
0121040 l o a d e d . \r \r C o p y r i g
0121060 h t ( c ) 1 9 8 5 X e r o
0121100 x C o r p o r a t i o n .
0121120 A l l r i g h t s r e s e r
0121140 v e d . \r \r
0121146