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