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