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