$ od -c -N 50000 [phylum]<3-LISP>DESRIVIERES>PRELIMINARY>REVISED-3CODE.TED!1 0000000 P r o p o s e d 3 - C O D E : 0000020 n e w b y t e c o d e s f 0000040 o r 3 - L I S P . \r \r J i m 0000060 d e s R i v i e r e s \r D e c 0000100 e m b e r 5 t h , 1 9 8 3 \r 0000120 \r F i l e d o n : { p h y l 0000140 u m } < d e s r i v i e r e s > 0000160 n l i s p > r e v i s e d - 3 c 0000200 o d e . t e d \r \r C o n s t a n 0000220 t s \r \r F u n c t i o n a l i t 0000240 y : P u s h e s a c o 0000260 n s t a n t i n t o t h e 0000300 c u r r e n t f r a m e . \r 0000320 \r A r g u m e n t s : O n e 0000340 o n t h e b y t e l i s p 0000360 s t a c k . \r \r N e w b y 0000400 t e c o d e : \r [ 3 C O 0000420 N S T ] ; l e n g t h 1 ; 0000440 f o r m a t - ; s t a c k 0000460 e f f e c t - 1 ; u f n 3 0000500 C O N S T . U F N \r \r I m p l e 0000520 m e n t a t i o n : \r \r 0000540 ( d e f u n 3 c o n s t . 0000560 u f n ( a r g ) \r ( p 0000600 r o g ( ) \r ( \ 0000620 p u t b a s e p t r * n e x t 0000640 * 0 a r g ) \r 0000660 ( s e t q * n e x t * ( \ a 0000700 d d b a s e * n e x t * w o 0000720 r d s - p e r - p t r ) ) \r 0000740 ( r e t u r n ) ) ) \r 0000760 \r V a r i a b l e r e f e r e 0001000 n c e s \r \r F u n c t i o n a l 0001020 i t y : L o o k u p t h 0001040 e b i n d i n g o f a 0001060 3 - L I S P v a r i a b l e 0001100 i n t h e c u r r e n t e 0001120 n v i r o n m e n t . P u s 0001140 h t h e r e s u l t i n t 0001160 o t h e c u r r e n t f r 0001200 a m e . \r \r A r g u m e n t s 0001220 : O n e i n t h e i n 0001240 s t r u c t i o n : t h e 3 0001260 - L I S P v a r i a b l e t 0001300 o b e l o o k e d u p ( 0001320 a L I S P a t o m ) . \r \r 0001340 N e w b y t e c o d e : \r 0001360 [ 3 V A R v a r i a b l e 0001400 ] ; l e n g t h 3 ; f o r 0001420 m a t A T O M ; s t a c k 0001440 e f f e c t 0 ; u f n 3 V 0001460 A R . U F N \r \r I m p l e m e n 0001500 t a t i o n : \r \r 0001520 ( d e f u n 3 v a r . u f n 0001540 ( v a r ) \r ( p r o 0001560 g ( c o n t o u r s k e l e 0001600 t o n r e s u l t p r o c 0001620 p o s i t i o n ) \r 0001640 ( s e t q c o n t o u r 0001660 * e n v * ) \r \r 0001700 s e a r c h - c o n t o u r \r 0001720 ( i f ( n u l 0001740 l c o n t o u r ) t h e n \r 0001760 ( * 0002000 L o o k i t u p i n t h 0002020 e g l o b a l e n v i r o n 0002040 m e n t . * ) \r 0002060 ( s e t q r e s u 0002100 l t ( g e t h a s h v a r 0002120 * g l o b a l - h a s h - a r r 0002140 a y * ) ) \r 0002160 ( i f ( n u l l r e s 0002200 u l t ) t h e n \r 0002220 ( 3 - l i 0002240 s p - e r r o r ' n o t . f o 0002260 u n d v a r ) ) \r 0002300 ( g o r e t u r 0002320 n - b i n d i n g ) ) \r \r 0002340 ( s e t q p r o c 0002360 ( f e t c h ( 3 f r a m e 0002400 p r o c ) o f c o n t o u 0002420 r ) ) \r ( s e 0002440 t q s k e l e t o n ( f e t 0002460 c h ( 3 c l o s u r e s k e 0002500 l e t o n ) o f p r o c ) ) 0002520 \r ( s e t q 0002540 p o s i t i o n ( f i n d v a 0002560 r v a r s k e l e t o n ) ) 0002600 \r ( i f ( n 0002620 e q p o s i t i o n 0 ) ) 0002640 t h e n \r 0002660 ( g o i t s - l o c a l ) 0002700 ) \r ( s e t q 0002720 c o n t o u r ( f e t c h 0002740 ( 3 c l o s u r e e n v ) o 0002760 f p r o c ) ) \r 0003000 ( g o s e a r c h - c o n 0003020 t o u r ) \r \r i t 0003040 s - l o c a l \r 0003060 ( i f ( n o t ( f e t c h 0003100 ( 3 f r a m e o b j e c t i 0003120 f i e d ) o f c o n t o u r 0003140 ) ) t h e n \r 0003160 ( s e t q r e s u l 0003200 t \r 0003220 ( \ g e t b a s e p t r \r 0003240 0003260 ( \ a d d b a s e \r 0003300 0003320 ( \ a d d b a s e \r 0003340 0003360 ( \ a d d b a s e c 0003400 o n t o u r ( i t i m e s 2 0003420 w o r d s - p e r - p t r ) ) 0003440 \r 0003460 p o s i t i o n 0003500 ) \r 0003520 p o s i t i o n ) 0003540 \r 0003560 0 ) ) \r 0003600 e l s e \r 0003620 ( s e t q r e s u l t \r 0003640 0003660 ( r n t h p o s i t i o n ( 0003700 f e t c h ( 3 f r a m e a r 0003720 g 1 ) o f c o n t o u r ) ) 0003740 ) ) \r ( g o 0003760 r e t u r n - b i n d i n g ) 0004000 \r \r r e t u r n - 0004020 b i n d i n g \r 0004040 ( \ p u t b a s e p t r * 0004060 n e x t * 0 r e s u l t ) \r 0004100 ( s e t q 0004120 * n e x t * ( \ a d d b a s e 0004140 * n e x t * w o r d s - p e 0004160 r - p t r ) ) \r 0004200 ( r e t u r n ) ) ) \r 0004220 \r \r S t a r t R e 0004240 d u c t i o n \r \r F u n c t i o 0004260 n a l i t y : A l l o c a t 0004300 e s a f r e s h a r g u m 0004320 e n t f r a m e . O p t i 0004340 o n a l l y , a l l o c a t e 0004360 a c o n t i n u a t i o n 0004400 a t t h e s a m e t i m e 0004420 ( f o r e m b e d d e d f 0004440 u n c t i o n c a l l s ) , 0004460 a n d r e c o r d t h a t 0004500 t h i s i s r e d u c t i o 0004520 n h a s a n o b j e c t i 0004540 f i e d a r g u m e n t . 0004560 \r \r A r g u m e n t s : P o s 0004600 s i b l y o n e i n t h e 0004620 i n s t r u c t i o n : t h 0004640 e n u m b e r o f s l o t 0004660 s r e q u i r e d ( 0 t o 0004700 2 5 5 ) . \r \r N e w b y t e 0004720 c o d e s : \r \r [ 3 S 0004740 T A R T ] ; l e n g t h 2 ; 0004760 f o r m a t S I C ; s t a 0005000 c k e f f e c t 0 ; u f n 0005020 3 S T A R T . U F N . \r 0005040 [ 3 T S T A R T ] ; l e n g 0005060 t h 2 ; f o r m a t S I C 0005100 ; s t a c k e f f e c t 0 0005120 ; u f n 3 T S T A R T . U F 0005140 N . . \r [ 3 O S T A R T 0005160 ] ; l e n g t h 1 ; f o r 0005200 m a t - ; s t a c k e f f 0005220 e c t 0 ; u f n 3 O S T A 0005240 R T . U F N . \r [ 3 T O 0005260 S T A R T ] ; l e n g t h 1 0005300 ; f o r m a t - ; s t a c 0005320 k e f f e c t 0 ; u f n 0005340 3 T O S T A R T . U F N \r \r I m 0005360 p l e m e n t a t i o n : \r \r 0005400 ( b l o c k r e c o r d 3 f 0005420 r a m e \r ( ( t y p e t 0005440 a g b y t e ) \r ( o 0005460 b j e c t i f i e d f l a g ) 0005500 \r ( e m b e d d e d 0005520 f l a g ) \r ( s p a r 0005540 e 1 b i t s 6 ) \r 0005560 ( n a r g s b y t e ) \r 0005600 ( s p a r e 2 w o r d 0005620 ) \r ( p r o c x p o 0005640 i n t e r ) \r ( a r g 0005660 1 x p o i n t e r ) \r 0005700 ( a r g 2 x p o i n t e r ) 0005720 \r ( a r g 3 x p o i 0005740 n t e r ) \r ( a r g 4 0005760 x p o i n t e r ) \r 0006000 . . . ) ) \r 0006020 \r ( d e f u n 3 0006040 m a k e f r a m e ( n a r g s 0006060 e m b e d d e d o b j e c t 0006100 i f i e d ) \r ( p r o g 0006120 ( ) \r ( s e t q 0006140 * f r a m e * * f r e e * ) \r 0006160 ( s e t q * f r e 0006200 e * \r ( \ a d 0006220 d b a s e * f r e e * ( i t 0006240 i m e s w o r d s - p e r - p 0006260 t r ( i p l u s n a r g s 0006300 2 ) ) ) ) \r ( r e p 0006320 l a c e ( 3 f r a m e t y p 0006340 e t a g ) o f * f r a m e * 0006360 w i t h e n v - t a g ) \r 0006400 ( r e p l a c e ( 3 0006420 f r a m e o b j e c t i f i e 0006440 d ) o f * f r a m e * w i 0006460 t h o b j e c t i f i e d ) \r 0006500 ( r e p l a c e ( 0006520 3 f r a m e e m b e d d e d ) 0006540 o f * f r a m e * w i t h 0006560 e m b e d d e d ) \r 0006600 ( r e p l a c e ( 3 f r a m 0006620 e n a r g s ) o f * f r a 0006640 m e * w i t h n a r g s ) \r 0006660 ( s e t q * n e x 0006700 t * ( a d d r ( 3 f r a m e 0006720 p r o c ) o f * f r a m e 0006740 * ) ) \r ( r e t u 0006760 r n ) ( * N o r e s u l t 0007000 . ) ) ) \r \r ( b l o c k r 0007020 e c o r d 3 c o n t \r 0007040 ( ( t y p e t a g b y t e ) \r 0007060 ( s p a r e b y t e 0007100 ) \r ( p c w o r d ) 0007120 \r ( e n v x p o i n 0007140 t e r ) \r ( f r a m e 0007160 x p o i n t e r ) \r 0007200 ( n e x t x p o i n t e r ) \r 0007220 ( c o n t x p o i n 0007240 t e r ) ) ) \r \r ( d e f u n 0007260 3 m a k e c o n t ( ) \r 0007300 ( p r o g ( n e w - c o n 0007320 t ) \r ( s e t q n 0007340 e w - c o n t * f r e e * ) \r 0007360 ( s e t q * f r e 0007400 e * \r ( \ a d 0007420 d b a s e * f r e e * ( i t 0007440 i m e s w o r d s - p e r - p 0007460 t r 5 ) ) \r ( r e 0007500 p l a c e ( 3 c o n t t y p 0007520 e t a g ) o f n e w - c o n 0007540 t w i t h c o n t i n u a t 0007560 i o n - t a g ) \r ( 0007600 r e p l a c e ( 3 c o n t s 0007620 p a r e ) o f n e w - c o n 0007640 t w i t h 0 ) \r 0007660 ( r e p l a c e ( 3 c o n t 0007700 e n v ) o f n e w - c o 0007720 n t w i t h * e n v * ) \r 0007740 ( r e p l a c e ( 3 0007760 c o n t f r a m e ) o f n 0010000 e w - c o n t w i t h * f r 0010020 a m e * ) \r ( r e p 0010040 l a c e ( 3 c o n t n e x t 0010060 ) o f n e w - c o n t w 0010100 i t h * n e x t * ) \r 0010120 ( r e p l a c e ( 3 c o n 0010140 t c o n t ) o f n e w - 0010160 c o n t w i t h * c o n t * 0010200 ) \r ( s e t q * 0010220 c o n t * n e w - c o n t ) \r 0010240 ( r e t u r n ) ) ) 0010260 \r \r ( d e f u n 3 s t a 0010300 r t . u f n ( n ) \r ( 0010320 p r o g ( ) \r ( 3 0010340 m a k e c o n t ) \r 0010360 ( 3 m a k e f r a m e n t 0010400 n i l ) \r ( r e t u 0010420 r n ) ) ) \r \r ( d e f u n 0010440 3 t s t a r t . u f n ( n ) \r 0010460 ( p r o g ( ) \r 0010500 ( 3 m a k e f r a m e n 0010520 n i l n i l ) \r 0010540 ( r e t u r n ) ) ) \r \r ( 0010560 d e f u n 3 o s t a r t . u f 0010600 n ( ) \r ( p r o g ( 0010620 ) \r ( 3 m a k e c o 0010640 n t ) \r ( 3 m a k e 0010660 f r a m e 1 t t ) \r 0010700 ( r e t u r n ) ) ) \r \r 0010720 ( d e f u n 3 t o s t a r t 0010740 . u f n ( ) \r ( p r o 0010760 g ( ) \r ( 3 m a k 0011000 e f r a m e 1 n i l t ) \r 0011020 ( r e t u r n ) ) ) 0011040 \r \r \r R e t u r n i n g \r \r F u 0011060 n c t i o n a l i t y : R e 0011100 s t o r e s t h e p r o c e 0011120 s s i n g s t a t e c a p t 0011140 u r e d b y t h e c u r r 0011160 e n t c o n t i n u a t i o n 0011200 , a n d s t o r e s t h e 0011220 r e s u l t i n t o t h a 0011240 t f r a m e . \r \r A r g u m e 0011260 n t s : O n e o n t h e 0011300 s t a c k . \r \r N e w 0011320 b y t e c o d e : \r [ 0011340 3 R E T U R N ] ; l e n g t h 0011360 1 ; s t a c k e f f e c 0011400 t 0 a n d j u m p s ; u 0011420 f n 3 R E T U R N . U F N . \r 0011440 \r \r ( d e f u n 3 r e t 0011460 u r n . u f n ( ) \r 0011500 ( p r o g ( t e m p ) \r 0011520 ( s e t q t e m p ( 0011540 \ g e t b a s e p t r * n e x 0011560 t * ( i m i n u s w o r d s 0011600 - p e r - p t r ) ) ) \r 0011620 ( s e t q * e n v * 0011640 ( f e t c h ( 3 c o n t e 0011660 n v ) o f * c o n t * ) ) \r 0011700 ( s e t q * f r 0011720 a m e * ( f e t c h ( 3 c o 0011740 n t f r a m e ) o f * c o 0011760 n t * ) ) \r ( s e 0012000 t q * n e x t * ( f e t c 0012020 h ( 3 c o n t n e x t ) o 0012040 f * c o n t * ) ) \r 0012060 ( s e t q p c 0012100 ( f e t c h ( 3 c o n t p c 0012120 ) o f * c o n t * ) ) \r 0012140 ( s e t q * c o n t 0012160 * ( f e t c h ( 3 c o n t 0012200 c o n t ) o f * c o n t * 0012220 ) ) \r ( \ p u t b 0012240 a s e p t r * n e x t * 0 0012260 t e m p ) \r ( s e 0012300 t q * n e x t * ( \ a d d b 0012320 a s e * n e x t * w o r d s 0012340 - p e r - p t r ) ) \r 0012360 ( r e t u r n ) ) ) \r \r P 0012400 r o c e d u r e c a l l i n g 0012420 \r \r F u n c t i o n a l i t y : 0012440 T r a n s f e r c o n t r 0012460 o l t o a 3 - L I S P p 0012500 r o c e d u r e . T h e a 0012520 r g u m e n t s a r e a s s 0012540 o c i a t e d w i t h t h e 0012560 p r o c e d u r e ' s p a r 0012600 a m e t e r s a n d a d d e 0012620 d t o t h e p r o c e d u 0012640 r e ' s e n v i r o n m e n t 0012660 , w h i c h t h e n b e 0012700 c o m e s t h e c u r r e n 0012720 t e n v i r o n m e n t . 0012740 T h e n e w p c i s t a 0012760 k e n f r o m t h e v a l 0013000 u e s a v e d i n t h e 0013020 p r o c e d u r e o b j e c t 0013040 . \r \r A r g u m e n t s : 0013060 N o n e . \r \r N 0013100 e w b y t e c o d e s : \r 0013120 [ 3 C A L L ] ; l e n g 0013140 t h 1 ; f o r m a t - ; 0013160 s t a c k e f f e c t 0 0013200 a n d j u m p s ; u f n 0013220 3 C A L L . U F N . \r \r I m p l 0013240 e m e n t a t i o n : \r \r 0013260 ( d e f u n 3 c a l l . u f 0013300 n ( ) \r ( p r o 0013320 g ( n g i v e n p r o c c 0013340 a l l e e n v a r s t e m p 0013360 n a r g s \r 0013400 e m b e d d e d o 0013420 b j e c t i f i e d ) \r 0013440 ( s e t q n g i v 0013460 e n ( f e t c h ( 3 f r a m 0013500 e n a r g s ) o f * f r a 0013520 m e * ) ) \r 0013540 ( s e t q p r o c ( f e t c 0013560 h ( 3 f r a m e p r o c ) 0013600 o f * f r a m e * ) ) \r 0013620 ( s e t q e m b 0013640 e d d e d ( f e t c h ( 3 f 0013660 r a m e e m b e d d e d ) o 0013700 f * f r a m e * ) ) \r 0013720 ( s e t q o b j e 0013740 c t i f i e d ( f e t c h ( 0013760 3 f r a m e o b j e c t i f i 0014000 e d ) o f * f r a m e * ) ) 0014020 \r \r ( s e t 0014040 q c a l l e e ( f e t c h 0014060 p a t t e r n o f p r o c ) 0014100 ) \r ( s e t 0014120 q s p r e a d ( s p r e a d 0014140 ? c a l l e e ) ) \r \r 0014160 ( c o n d ( ( a n 0014200 d s p r e a d ( n o t o b 0014220 j e c t i f i e d ) ) \r 0014240 ( g o 0014260 c h e c k - a r i t y ) ) \r 0014300 ( 0014320 ( a n d s p r e a d o b j e 0014340 c t i f i e d ) \r 0014360 ( g o s p 0014400 r e a d - a r g s ) ) \r 0014420 ( ( a n 0014440 d ( n o t s p r e a d ) o 0014460 b j e c t i f i e d ) \r 0014500 ( g o 0014520 n o - p r o b l e m s ) ) \r 0014540 ( 0014560 ( a n d ( n o t s p r e a d 0014600 ) ( n o t o b j e c t i f i 0014620 e d ) ) \r 0014640 ( g o c o l l e c 0014660 t - a r g s ) ) ) \r \r 0014700 s p r e a d - a r g s \r 0014720 ( s e t q a 0014740 r g 1 ( f e t c h ( 3 f r a 0014760 m e a r g 1 ) o f * f r a 0015000 m e * ) ) \r 0015020 ( i f ( a n d ( r a i l ? 0015040 a r g 1 ) \r 0015060 ( e q ( r l e n g 0015100 t h a r g 1 ) ( n e x p e c 0015120 t e d c a l l e e ) ) ) t h 0015140 e n \r 0015160 ( g o n o - p r o b l e m s 0015200 ) \r e l s 0015220 e \r 0015240 ( g o m i s m a t c h ) ) \r 0015260 \r 0015300 c o l l e c t - a r g 0015320 s \r ( s e t 0015340 q t e m p ( r c o n s 0 ) ) 0015360 \r ( s e t q 0015400 a r g p t r * n e x t * ) \r 0015420 ( f o r i 0015440 f r o m 1 t o n g i v e 0015460 n d o \r 0015500 ( s e t q a r g p t r \r 0015520 0015540 ( \ a d d b a s e a r g p t r 0015560 ( i m i n u s w o r d s - p 0015600 e r - p t r ) ) ) \r 0015620 ( s e t q t e m 0015640 p \r 0015660 ( p r e p ( \ g e t b a 0015700 s e p t r a r g p t r 0 ) 0015720 t e m p ) ) ) \r 0015740 ( r e p l a c e ( 3 f r a 0015760 m e a r g 1 ) o f * f r a 0016000 m e * w i t h t e m p ) \r 0016020 ( r e p l a c 0016040 e ( 3 f r a m e o b j e c t 0016060 i f i e d ) o f * f r a m e 0016100 * w i t h t ) \r 0016120 ( g o n o - p r o b l 0016140 e m s ) \r \r c h 0016160 e c k - a r i t y \r 0016200 ( i f ( e q n g i v 0016220 e n ( n e x p e c t e d c a 0016240 l l e e ) ) t h e n \r 0016260 ( g o n o 0016300 - p r o b l e m s ) \r 0016320 e l s e \r 0016340 ( g o m i s 0016360 m a t c h ) ) \r \r 0016400 m i s m a t c h \r 0016420 ( 3 - l i s p - e r r o 0016440 r ' m i s m a t c h n i l ) 0016460 ) \r \r 0016500 n o - p r o b l e m s 0016520 \r ( s e t q 0016540 * e n v * * f r a m e * ) 0016560 \r 0016600 ( s e t q 0016620 * f r a m e * n i l ) \r 0016640 ( s e t q * n e 0016660 x t * * s c r a t c h p a d * 0016700 ) \r \r ( i f 0016720 e m b e d d e d t h e n \r 0016740 ( r e 0016760 p l a c e ( 3 c o n t p c ) 0017000 o f * c o n t * w i t h 0017020 p c ) ) \r \r 0017040 ( s e t q p c \r 0017060 ( s t a r t - a d d 0017100 r e s s \r 0017120 ( f e t c h ( 3 0017140 c l o s u r e s k e l e t o n 0017160 ) o f p r o c ) ) ) \r 0017200 ( r e t u r n ) ) 0017220 ) \r \r \r \r L a m b d a e x p 0017240 r e s s i o n s \r \r F u n c t i 0017260 o n a l i t y : C r e a t e 0017300 a n e w c l o s u r e . \r 0017320 \r A r g u m e n t s : O n 0017340 e : t h e s k e l e t o n 0017360 s t r u c t u r e f o r t 0017400 h e l a m b d a e x p r e s 0017420 s i o n . \r \r N e w b y t e 0017440 c o d e : \r [ 3 L A M B 0017460 D A p ] ; l e n g t h 1 ; 0017500 f o r m a t - ; s t a c k 0017520 e f f e c t - 1 ; u f n 0017540 3 L A M B D A . U F N . \r \r I m 0017560 p l e m e n t a t i o n : \r \r 0017600 ( b l o c k r e c o r d 0017620 3 c l o s u r e \r 0017640 ( ( t y p e t a g b y t e ) \r 0017660 ( s p a r e 1 0017700 b y t e ) \r ( s 0017720 p a r e 2 w o r d ) \r 0017740 ( s k e l e t o n x p 0017760 o i n t e r ) \r 0020000 ( e n v x p o i n t e r ) ) ) 0020020 \r \r ( d e 0020040 f u n 3 l a m b d a . u f n 0020060 ( s k e l e t o n ) \r 0020100 ( p r o g ( ) \r 0020120 ( s e t q c l * f r e e * 0020140 ) \r ( s e t q 0020160 * f r e e * ( \ a d d b a s e 0020200 * f r e e * ( i t i m e s 0020220 w o r d s - p e r - p t r 3 ) 0020240 ) ) \r ( r e p l 0020260 a c e ( 3 c l o s u r e t y 0020300 p e t a g ) o f c l w i t 0020320 h c l o s u r e - t a g ) \r 0020340 ( r e p l a c e 0020360 ( 3 c l o s u r e s p a r e 1 0020400 ) o f c l w i t h 0 ) \r 0020420 ( r e p l a c e 0020440 ( 3 c l o s u r e s p a r e 0020460 2 ) o f c l w i t h 0 ) 0020500 \r ( r e p l a c 0020520 e ( 3 c l o s u r e s k e l 0020540 e t o n ) o f c l w i t h 0020560 s k e l e t o n ) \r 0020600 ( r e p l a c e ( 3 c l 0020620 o s u r e e n v ) o f c l 0020640 w i t h * e n v * ) \r 0020660 ( \ p u t b a s e p t 0020700 r * n e x t * 0 c l ) \r 0020720 ( s e t q * n e 0020740 x t * ( \ a d d b a s e * n 0020760 e x t * w o r d s - p e r - p 0021000 t r ) ) \r ( r e 0021020 t u r n ) ) ) \r 0021040 \r \r C h e c k i 0021060 n g f o r r e f l e c t i v 0021100 e p r o c e d u r e s \r \r F u 0021120 n c t i o n a l i t y : E n 0021140 s u r e t h a t t h e o b 0021160 j e c t i n t h e P R O C 0021200 p o s i t i o n o f t h e 0021220 c u r r e n t f r a m e i 0021240 s a s i m p l e c l o s u 0021260 r e . E r r o r i f n o 0021300 t . \r \r A r g u m e n t s : 0021320 N o n e \r \r N e w b 0021340 y t e c o d e : \r [ 3 0021360 P C H E C K ] ; l e n g t h 0021400 1 ; f o r m a t - ; s t a 0021420 c k e f f e c t 0 ; u f n 0021440 3 P C H E C K . U F N . \r \r I 0021460 m p l e m e n t a t i o n : \r 0021500 \r ( d e f u n 3 p c h e 0021520 c k . u f n ( ) \r ( 0021540 p r o g ( p r o c ) \r 0021560 ( s e t q p r o c ( f 0021600 e t c h ( 3 f r a m e p r o 0021620 c ) o f * f r a m e * ) ) \r 0021640 ( i f ( n o t 0021660 ( s i m p l e - c l o s u r e ? 0021700 p r o c ) ) t h e n \r 0021720 ( 3 - l i s 0021740 p - e r r o r ' s u p r i s e 0021760 ! ) ) \r ( r e t u 0022000 r n ) ) ) \r \r C o n d i t i o n 0022020 a l s \r \r F u n c t i o n a l i 0022040 t y : P o p a v a l u e 0022060 f r o m t h e a r g u m e 0022100 n t f r a m e , c h e c k 0022120 t o s e e t h a t i t 0022140 i s a b o o l e a n v a l 0022160 u e , a n d t h e n r e t 0022200 u r n i t . \r \r A r g u m e 0022220 n t s : N o n e \r \r 0022240 N e w b y t e c o d e : \r 0022260 [ 3 I F ] ; l e n g t h 0022300 1 ; f o r m a t - ; s t 0022320 a c k e f f e c t + 1 ; u 0022340 f n 3 I F . U F N . \r \r I m p 0022360 l e m e n t a t i o n : \r \r 0022400 ( d e f u n 3 i f . u f n 0022420 ( ) \r ( p r o g ( 0022440 t e m p ) \r ( s e 0022460 t q * n e x t * ( \ a d d b 0022500 a s e * n e x t * ( i m i n 0022520 u s w o r d s - p e r - p t r 0022540 ) ) ) \r ( s e t q 0022560 t e m p ( \ g e t b a s e p 0022600 t r * n e x t * 0 ) ) \r 0022620 ( i f ( n o t ( b 0022640 o o l e a n ? t e m p ) ) t 0022660 h e n \r ( 0022700 3 - l i s p - e r r o r ' b o 0022720 o l e a n - e x p e c t e d ) ) 0022740 \r ( r e t u r n 0022760 t e m p ) ) ) \r \r G l o b a l 0023000 S e t \r \r F u n c t i o n a l i 0023020 t y : C h a n g e t h e 0023040 g l o b a l b i n d i n g o 0023060 f a 3 L I S P v a r i a b 0023100 l e . \r \r A r g u m e n t s 0023120 : O n e : t h e n a m e 0023140 o f t h e v a r i a b l e 0023160 ( a n a t o m ) . \r 0023200 \r N e w b y t e c o d e : \r 0023220 [ 3 G S E T ] ; l e n 0023240 g t h 3 ; f o r m a t - ; 0023260 s t a c k e f f e c t 0 ; 0023300 u f n 3 G S E T . U F N . \r 0023320 \r I m p l e m e n t a t i o n : 0023340 \r \r ( d e f u n 3 g s 0023360 e t . u f n ( v a r ) \r 0023400 ( p r o g ( t e m p ) \r 0023420 ( s e t q t e m p 0023440 ( \ g e t b a s e p t r * n 0023460 e x t * ( i m i n u s w o r 0023500 d s - p e r - p t r ) ) ) \r 0023520 ( g l o b a l - r e b 0023540 i n d v a r t e m p ) \r 0023560 ( r e t u r n ) ) ) 0023600 \r \r P r i m i t i v e p r o c 0023620 e d u r e s e t a l . \r \r F 0023640 u n c t i o n a l i t y : T 0023660 h e r e a r e a h o s t 0023700 o f p r i m i t i v e p r o 0023720 c e d u r e s t h a t d o 0023740 e l e m e n t a r y d a t a 0023760 s t r u c t u r e m a n i p u 0024000 l a t i o n f o r t h e m 0024020 o s t p a r t . T o i m 0024040 p l e m e n t t h e s e i t 0024060 w i l l b e n e c e s s a 0024100 r y t o h a v e a b y t 0024120 e c o d e t h a t r e t u r 0024140 n s a n a r g u m e n t f 0024160 r o m t h e f i r s t f r 0024200 a m e o f t h e c u r r e 0024220 n t e n v i r o n m e n t . 0024240 \r \r A r g u m e n t s : O 0024260 n e : w h i c h a r g u m e 0024300 n t ( 1 , 2 , 3 , . . . 0024320 ) ; r e s u l t c o m e s 0024340 b a c k o n t h e s t a c 0024360 k . \r \r N e w b y t e c o d 0024400 e : \r [ 3 A R G ] ; l 0024420 e n g t h 2 ; f o r m a t 0024440 S I C ; s t a c k e f f e c 0024460 t + 1 ; u f n 3 A R G . U 0024500 F N . \r \r I m p l e m e n t a t 0024520 i o n : \r \r ( d e f u n 0024540 3 a r g . u f n ( n ) \r 0024560 ( p r o g ( t e m p ) \r 0024600 ( i f ( f e t c 0024620 h ( 3 f r a m e o b j e c t 0024640 i f i e d ) o f * e n v * ) 0024660 t h e n \r 0024700 ( r e t u r n ( r n t h n 0024720 ( f e t c h ( 3 f r a m e 0024740 a r g 1 ) o f * e n v * ) \r 0024760 e l s e \r 0025000 ( s e t q t e 0025020 m p \r 0025040 ( \ a d d b a s e \r 0025060 ( \ a 0025100 d d b a s e \r 0025120 ( 0025140 \ a d d b a s e * e n v * \r 0025160 0025200 ( i t i m e s 0025220 2 w o r d s - p e r - p t r 0025240 ) ) \r 0025260 n ) \r 0025300 n ) ) \r 0025320 ( r e t u r n 0025340 ( \ g e t b a s e p t r t e m 0025360 p 0 ) ) ) ) ) \r \r \r E x a m 0025400 p l e b y t e c o d e s e q 0025420 u e n c e f o r t h e P R 0025440 E P p r i m i t i v e : \r \r 0025460 3 A R G 0025500 1 \r 3 A R G 0025520 2 \r F 0025540 N 2 P R E P - P R I M I 0025560 T I V E \r 3 0025600 C O N S T \r 0025620 3 R E T U R N \r \r \r \r \r \r E x t 0025640 e n d e d e x a m p l e # 1 0025660 : \r \r ( l a m b d a [ x 0025700 y ] ( f o o x y 1 ) ) 0025720 \r \r G C O N 0025740 S T ( S P R E A D 2 ( X 0025760 Y ) l a b e l 1 ) \r 0026000 3 L A M B D A \r 0026020 3 R E T U R N \r l 0026040 a b e l 1 3 T S T A R T 0026060 3 \r 3 V A 0026100 R F O O \r 0026120 3 P C H E C K \r 0026140 3 V A R X \r 0026160 3 V A R 0026200 Y \r 3 C O 0026220 N S T 1 \r 0026240 3 C A L L \r \r \r E x t e n d e 0026260 d e x a m p l e # 2 : \r \r 0026300 ( l a m b d a a r g s ( 0026320 f ( g x ) ( h . x ) ) 0026340 \r \r G C O N S T 0026360 ( N O S P R E A D ( A R G 0026400 S ) l a b e l 1 ) \r 0026420 3 L A M B D A \r 0026440 3 R E T U R N \r l a b e l 0026460 1 3 T S T A R T 3 \r 0026500 3 V A R F 0026520 \r 3 P C H E 0026540 C K \r 3 S T 0026560 A R T 1 \r 0026600 3 V A R G \r 0026620 3 P C H E C K 0026640 \r 3 V A 0026660 R X \r 0026700 3 C A L L \r 0026720 3 O S T A R T \r 0026740 3 V A R H 0026760 \r 3 P C 0027000 H E C K \r 0027020 3 V A R X \r 0027040 3 C A L L \r 0027060 3 C A L L \r \r \r E 0027100 x t e n d e d e x a m p l e 0027120 # 3 : \r \r ( l a m b d a 0027140 [ n ] ( i f ( = n 0 ) 0027160 1 ( * n ( f a c t ( - 0027200 n 1 ) ) ) ) ) \r \r 0027220 G C O N S T ( S P R E A D 0027240 ( N ) l a b e l 1 ) \r 0027260 3 L A M B D A \r 0027300 3 R E T U R N \r l a 0027320 b e l 1 3 S T A R T 2 \r 0027340 3 V A R 0027360 = \r 3 P C 0027400 H E C K \r 3 0027420 V A R N \r 0027440 3 C O N S T 0 \r 0027460 3 C A L L \r 0027500 3 I F \r 0027520 T J U M P l a b e l 2 \r 0027540 J U M P l a b e 0027560 l 3 \r l a b e l 2 3 C O N S 0027600 T 1 \r 3 0027620 R E T U R N \r l a b e l 3 3 0027640 T S T A R T 2 \r 0027660 3 V A R * \r 0027700 3 P C H E C K 0027720 \r 3 V A R 0027740 N \r 3 0027760 S T A R T 1 \r 0030000 3 V A R F A C 0030020 T \r 3 P 0030040 C H E C K \r 0030060 3 S T A R T 2 \r 0030100 3 V A R 0030120 - \r 0030140 3 P C H E C K \r 0030160 3 V A R 0030200 N \r 0030220 3 C O N S T 1 \r 0030240 3 C A L L \r 0030260 3 C A L L 0030300 \r 3 C A L L 0030320 \r \r E x t e n d e d e x a m p 0030340 l e # 4 : \r \r ( l a m b 0030360 d a [ x ] ( l a m b d a [ 0030400 y ] ( + x y ) ) ) \r \r 0030420 G C O N S T ( S P 0030440 R E A D ( X ) l a b e l 1 0030460 ) \r 3 L A M B D 0030500 A \r 3 R E T U R 0030520 N \r l a b e l 1 G C O N S T 0030540 ( S P R E A D ( Y ) l a 0030560 b e l 2 ) \r 3 L 0030600 A M B D A \r 3 R 0030620 E T U R N \r l a b e l 2 3 T 0030640 S T A R T 2 \r 0030660 3 V A R + \r 0030700 3 P C H E C K \r 0030720 3 V A R 0030740 X \r 3 V A R 0030760 Y \r 0031000 3 C A L L \r \r \r ~ ~ ~ E n d o 0031020 f f i l e ~ ~ ~ \r \0 \0 \0 + \0 \0 0031040 \0 \n T I M E S R O M A N \0 016 \0 \0 0031060 \0 \0 \0 \0 002 \0 \0 \0 \0 ^ \0 \0 \0 \a C L 0031100 A S S I C \0 \f \0 \0 \0 \0 \0 \0 \0 \0 \0 0031120 \0 \0 \t \0 \0 \0 \a C L A S S I C \0 \f 0031140 \0 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 312 \0 \0 \0 \a 0031160 C L A S S I C \0 \f \0 \0 \0 \0 \0 \0 \0 0031200 \0 \0 \0 \0 225 \0 \0 \0 005 G A C H A \0 \n 0031220 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 023 \0 \0 \0 \a 0031240 C L A S S I C \0 \f \0 \0 \0 \0 \0 \0 002 0031260 \0 \0 \0 001 E \0 \0 \0 \a C L A S S I C 0031300 \0 \f \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 005 F \0 \0 0031320 \0 005 G A C H A \0 \n \0 \0 \0 \0 \0 \0 \0 0031340 \0 \0 \0 \0 \t \0 \0 \0 \a C L A S S I C 0031360 \0 \f \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 017 \0 \0 0031400 \0 \a C L A S S I C \0 \f \0 \0 \0 \0 \0 0031420 \0 002 \0 \0 \0 002 W \0 \0 \0 \a C L A S S 0031440 I C \0 \f \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \a % 0031460 \0 \0 \0 005 G A C H A \0 \n \0 \0 \0 \0 \0 0031500 \0 \0 \0 \0 \0 \0 \t \0 \0 \0 \a C L A S S 0031520 I C \0 \f \0 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 365 0031540 \0 \0 \0 \a C L A S S I C \0 \f \0 \0 \0 0031560 \0 \0 \0 \0 \0 \0 \0 001 335 \0 \0 \0 005 G A C 0031600 H A \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 001 0031620 \0 \0 \0 \a C L A S S I C \0 \f \0 \0 \0 0031640 \0 \0 \0 \0 \0 \0 \0 \0 021 \0 \0 \0 \a C L A 0031660 S S I C \0 \f \0 \0 \0 \0 \0 \0 002 \0 \0 \0 0031700 001 234 \0 \0 \0 \a C L A S S I C \0 \f \0 0031720 \0 \0 \0 \0 \0 \0 \0 \0 \0 \a 350 \0 \0 \0 005 G 0031740 A C H A \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0031760 \0 002 \0 \0 \0 \a C L A S S I C \0 \f \0 0032000 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 022 \0 \0 \0 \a C 0032020 L A S S I C \0 \f \0 \0 \0 \0 \0 \0 002 \0 0032040 \0 \0 \0 327 \0 \0 \0 \a C L A S S I C \0 0032060 \f \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 253 \0 \0 \0 0032100 005 G A C H A \0 \n \0 \0 \0 \0 \0 \0 \0 \0 0032120 \0 \0 \0 " \0 \0 \0 \a C L A S S I C \0 0032140 \f \0 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 364 \0 \0 \0 0032160 \a C L A S S I C \0 \f \0 \0 \0 \0 \0 \0 0032200 \0 \0 \0 \0 \0 306 \0 \0 \0 005 G A C H A \0 0032220 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 001 \0 \0 \0 0032240 \a C L A S S I C \0 \f \0 \0 \0 \0 \0 \0 0032260 \0 \0 \0 \0 \0 \f \0 \0 \0 \a C L A S S I 0032300 C \0 \f \0 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 353 \0 0032320 \0 \0 \a C L A S S I C \0 \f \0 \0 \0 \0 0032340 \0 \0 \0 \0 \0 \0 \0 372 \0 \0 \0 005 G A C H 0032360 A \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 001 \0 0032400 \0 \0 \a C L A S S I C \0 \f \0 \0 \0 \0 0032420 \0 \0 \0 \0 \0 \0 \0 \n \0 \0 \0 \a C L A S 0032440 S I C \0 \f \0 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 0032460 337 \0 \0 \0 \a C L A S S I C \0 \f \0 \0 0032500 \0 \0 \0 \0 \0 \0 \0 \0 \0 240 \0 \0 \0 005 G A 0032520 C H A \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0032540 033 \0 \0 \0 \a C L A S S I C \0 \f \0 \0 0032560 \0 \0 \0 \0 002 \0 \0 \0 001 271 \0 \0 \0 \a C L 0032600 A S S I C \0 \f \0 \0 \0 \0 \0 \0 \0 \0 \0 0032620 \0 001 246 \0 \0 \0 005 G A C H A \0 \n \0 \0 0032640 \0 \0 \0 \0 \0 \0 \0 \0 \0 " \0 \0 \0 \a C L 0032660 A S S I C \0 \f \0 \0 \0 \0 \0 \0 \0 \0 \0 0032700 \0 \0 004 \0 \0 \0 005 G A C H A \0 \n \0 \0 0032720 \0 \0 \0 \0 \0 \0 \0 \0 \0 \v \0 \0 \0 \a C L 0032740 A S S I C \0 \f \0 \0 \0 \0 \0 \0 \0 \0 \0 0032760 \0 \0 p \0 \0 \0 005 G A C H A \0 \n \0 \0 0033000 \0 \0 \0 \0 \0 \0 \0 \0 \0 024 \0 \0 \0 \a C L 0033020 A S S I C \0 \f \0 \0 \0 \0 \0 \0 \0 \0 \0 0033040 \0 \0 370 \0 \0 \0 005 G A C H A \0 \n \0 \0 0033060 \0 \0 \0 \0 \0 \0 \0 \0 \0 024 \0 \0 \0 \a C L 0033100 A S S I C \0 \f \0 \0 \0 \0 \0 \0 \0 \0 \0 0033120 \0 001 202 \0 \0 \0 005 G A C H A \0 \n \0 \0 0033140 \0 \0 \0 \0 \0 \0 \0 \0 \0 024 \0 \0 \0 \a C L 0033160 A S S I C \0 \f \0 \0 \0 \0 \0 \0 \0 \0 \0 0033200 \0 002 177 \0 \0 \0 005 G A C H A \0 \n \0 \0 0033220 \0 \0 \0 \0 \0 \0 \0 \0 \0 024 \0 \0 \0 \a C L 0033240 A S S I C \0 \f \0 \0 \0 \0 \0 \0 \0 \0 \0 0033260 \0 001 " \0 \0 \0 005 G A C H A \0 \n \0 \0 0033300 \0 \0 \0 \0 \0 \0 \0 \0 \0 022 \0 \0 \0 \a C L 0033320 A S S I C \0 \f \0 \0 \0 \0 \0 \0 \0 \0 \0 0033340 \0 \0 \0 \0 \0 \0 005 G A C H A \0 \n \0 \0 0033360 \0 \0 \0 \0 \0 \0 \0 \0 2 032 \0 3 z 267 0033376