Constructor Calculus

download Constructor Calculus

of 20

Transcript of Constructor Calculus

  • 8/14/2019 Constructor Calculus

    1/20

    D i s t i n g u i s h i n g D a t a S t r u c t u r e s a n d F u n c t i o n s :

    t h e C o n s t r u c t o r C a l c u l u s

    a n d F u n c t o r i a l T y p e s

    C . B a r r y J a y

    U n i v e r s i t y o f T e c h n o l o g y , S y d n e y

    c b j @ i t . u t s . e d u . a u

    A b s t r a c t . T h e e x p r e s s i v e p o w e r o f f u n c t i o n a l p r o g r a m m i n g c a n b e i m -

    p r o v e d b y i d e n t i f y i n g a n d e x p l o i t i n g t h e c h a r a c t e r i s t i c s t h a t d i s t i n g u i s h d a t a

    t y p e s f r o m f u n c t i o n t y p e s . D a t a t y p e s s u p p o r t g e n e r i c f u n c t i o n s f o r e q u a l i t y ,

    m a p p i n g , f o l d i n g , e t c . t h a t d o n o t a p p l y t o f u n c t i o n s . S u c h g e n e r i c f u n c -

    t i o n s r e q u i r e c a s e a n a l y s i s , o r p a t t e r n - m a t c h i n g , w h e r e t h e b r a n c h e s m a y

    h a v e i n c o m p a t i b l e t y p e s , e . g . p r o d u c t s o r s u m s . T h i s i s h a n d l e d i n t h e c o n -

    s t r u c t o r c a l c u l u s w h e r e s p e c i a l i s a t i o n o f p r o g r a m e x t e n s i o n s i s g o v e r n e d b y

    c o n s t r u c t o r s f o r d a t a t y p e s . T y p i n g o f g e n e r i c f u n c t i o n s e m p l o y s p o l y m o r -

    p h i s m o v e r f u n c t o r s i n a f u n c t o r i a l t y p e s y s t e m . T h e e x p r e s s i v e p o w e r i s

    g r e a t l y i n c r e a s e d b y a l l o w i n g t h e f u n c t o r s t o b e p o l y m o r p h i c i n t h e n u m -

    b e r o f a r g u m e n t s t h e y t a k e , i . e . i n t h e i r a r i t i e s . T h e r e s u l t i n g s y s t e m c a n

    d e n e a n d t y p e t h e f u n d a m e n t a l e x a m p l e s a b o v e . S o m e b a s i c p r o p e r t i e s a r e

    e s t a b l i s h e d , n a m e l y s u b j e c t r e d u c t i o n , t h e C h u r c h - R o s s e r p r o p e r t y , a n d t h e

    e x i s t e n c e o f a p r a c t i c a l t y p e i n f e r e n c e a l g o r i t h m .

    1 I n t r o d u c t i o n

    G e n e r i c p r o g r a m m i n g B S 9 8 , J e u 0 0 ] a p p l i e s t h e k e y o p e r a t i o n s o f t h e B i r d - M e e r t e n s

    s t y l e , s u c h a s m a p p i n g a n d f o l d i n g t o a g e n e r a l c l a s s o f d a t a s t r u c t u r e s t h a t i n c l u d e s

    i n i t i a l a l g e b r a t y p e s f o r l i s t s a n d t r e e s . S u c h o p e r a t i o n s a r e a t t h e h e a r t o f d a t a m a -

    n i p u l a t i o n , s o t h a t a n y i m p r o v e m e n t h e r e c a n h a v e a m a j o r i m p a c t o n t h e s i z e o f

    p r o g r a m s a n d t h e c o s t o f t h e i r c o n s t r u c t i o n . M o s t t r e a t m e n t s o f g e n e r i c p r o g r a m -

    m i n g e i t h e r f o c u s o n t h e s e m a n t i c s M F P 9 1 ] , o r u s e t y p e i n f o r m a t i o n t o d r i v e t h e

    e v a l u a t i o n J J 9 7 , J a n 0 0 , H i n 0 0 ] . F u n c t o r i a l M L ( f m l ) J B M 9 8 ] s h o w e d h o w e v a l u a -

    t i o n c o u l d b e a c h i e v e d p a r a m e t r i c a l l y , w i t h o u t r e f e r e n c e t o t y p e s , b u t w a s u n a b l e

    t o d e n e g e n e r i c f u n c t i o n s a n d s o h a d t o r e p r e s e n t t h e m a s c o m b i n a t o r s . S u c h d e f -

    i n i t i o n s r e q u i r e a b e t t e r u n d e r s t a n d i n g o f d a t a s t r u c t u r e s t h a t d e m o n s t r a t e s w h y

    p a i r i n g b u i l d s t h e m b u t l a m b d a - a b s t r a c t i o n d o e s n o t . T h e u s u a l a p p r o a c h , b a s e d

    o n i n t r o d u c t i o n - e l i m i n a t i o n r u l e s f o r t y p e s , d o e s n o t d o s o a s i t d e r i v e s b o t h p a i r i n g

    a n d l a m b d a - a b s t r a c t i o n f r o m i n t r o d u c t i o n r u l e s . A s d a t a s t r u c t u r e s a r e b u i l t u s i n g

    c o n s t r u c t o r s , t h e c h a l l e n g e i s t o a c c o u n t f o r t h e m i n a n e w w a y . T h i s i s d o n e i n t h e

    c o n s t r u c t o r c a l c u l u s .

    G e n e r i c p r o g r a m s a r e p o l y m o r p h i c i n t h e c h o i c e o f s t r u c t u r e u s e d t o h o l d t h e

    d a t a . A s e c o n d c h a l l e n g e i s t o r e p r e s e n t t h i s p o l y m o r p h i s m w i t h i n a t y p e s y s t e m .

    T h i s r e q u i r e s a n a c c o u n t o f d a t a t y p e s t h a t d e m o n s t r a t e s w h y t h e p r o d u c t o f t w o

    d a t a t y p e s i s a d a t a t y p e b u t t h e i r f u n c t i o n t y p e i s n o t . T h e f u n c t o r i a l t y p e s y s t e m

    w i l l r e p r e s e n t a t y p i c a l d a t a t y p e a s t h e a p p l i c a t i o n o f a f u n c t o r F ( r e p r e s e n t i n g

    t h e s t r u c t u r e ) t o a t y p e ( o r t u p l e o f t y p e s ) X r e p r e s e n t i n g t h e d a t a . F u n c t o r a p -

    p l i c a t i o n s a r e t h e f u n d a m e n t a l o p e r a t i o n s f o r c o n s t r u c t i n g d a t a t y p e s , i n t h e s e n s e

    t h a t f u n c t i o n t y p e s a r e f u n d a m e n t a l f o r c o n s t r u c t i n g p r o g r a m t y p e s . Q u a n t i c a t i o n

    o v e r f u n c t o r s w i l l c a p t u r e p o l y m o r p h i s m i n t h e s t r u c t u r e .

  • 8/14/2019 Constructor Calculus

    2/20

    T h i s l a s t s t a t e m e n t i s a s l i g h t s i m p l i c a t i o n . D i e r e n t f u n c t o r s t a k e d i e r e n t

    n u m b e r s o f t y p e a r g u m e n t s , a n d p r o d u c e d i e r e n t n u m b e r s o f r e s u l t s . T h i s i n f o r -

    m a t i o n i s c a p t u r e d b y g i v i n g f u n c t o r s k i n d s o f t h e f o r m m ! n w h e r e m a n d n a r e

    t h e a r i t i e s o f t h e a r g u m e n t s a n d r e s u l t s . F u r t h e r , a t y p i c a l f u n c t o r i s b u i l t f r o m a

    v a r i e t y o f f u n c t o r s , a l l o f d i e r e n t k i n d s . I t f o l l o w s t h a t a t y p i c a l g e n e r i c f u n c t i o n

    c a n n o t b e d e n e d f o r f u n c t o r s o f o n e k i n d o n l y , b u t m u s t b e p o l y m o r p h i c i n a r i t i e s ,

    t o o . T h e i n a b i l i t y t o q u a n t i f y o v e r a r i t i e s w a s t h e b i g g e s t d r a w b a c k o f f m l , w h o s e

    p r i m i t i v e c o n s t a n t s c a m e i n f a m i l i e s i n d e x e d b y a r i t i e s .

    I n i t s b a s i c f o r m , t h e r e s u l t i n g s y s t e m s u p p o r t s a l a r g e c l a s s o f c o n c r e t e d a t a

    t y p e s w h o s e t e r m s , b u i l t f r o m t h e g i v e n ( n i t e ) s e t o f c o n s t r u c t o r s , c a n b e h a n d l e d

    b y g e n e r i c o p e r a t i o n s . I n p r a c t i c e , h o w e v e r , p r o g r a m m e r s n e e d t o d e n e t h e i r o w n

    ( a b s t r a c t ) d a t a t y p e s . I f t h e s e c o n t r i b u t e n e w c o n s t r u c t o r s t h e n i t i s n o t a t a l l c l e a r

    h o w g e n e r i c f u n c t i o n s c a n b e a p p l i e d t o t h e m w i t h o u t a d d i t i o n a l c o d i n g . F o r e x a m -

    p l e , w h e n a n e w d a t a t y p e i s d e n e d i n H a s k e l l A a 9 7 ] t h e n t h e v a r i o u s f r a g m e n t s o f

    c o d e r e q u i r e d f o r m a p p i n g , e t c . a r e a d d e d b y t h e p r o g r a m m e r . T h i s i s b e t t e r t h a n

    r e - d e n i n g t h e w h o l e f u n c t i o n b u t i t i s s t i l l s o m e t h i n g l e s s t h a n f u l l g e n e r i c i t y .

    > j > d a t a t y p e t r e e ( a ; b ) = l e a f a j n o d e b : t r e e ( a ; b ) : t r e e ( a ; b ) ; ;

    > j > l e t t r = n o d e 3 1 ( l e a f 4 ) ( l e a f 5 ) ; ;

    t r : ( t r e e : : 2 ! 1 ) ( i n t ; o a t )

    n o d e 3 1 ( l e a f 4 ) ( l e a f 5 )

    > j > l e t f x = x + 1 ; ;

    f : i n t ! i n t

    > j > l e t g y = y 3 0 ; ;

    g : o a t ! o a t

    > j > l e t t r 2 = m a p 2 f g t r ; ;

    t r 2 : ( t r e e : : 2 ! 1 ) ( i n t ; o a t )

    n o d e 9 3 ( l e a f 5 ) ( l e a f 6 )

    > j > l e t t r 3 = p l u s t r t r ; ;

    t r 3 : ( t r e e : : 2 ! 1 ) ( i n t ; o a t )

    n o d e 6 2 ( l e a f 8 ) ( l e a f 1 0 )

    F i g . 1 . E x a m p l e s o f g e n e r i c p r o g r a m m i n g i n F I S h 2

    T h e s o l u t i o n a d o p t e d h e r e i s t o c r e a t e t h e a b s t r a c t d a t a s t r u c t u r e s b y t a g g i n g

    t h e u n d e r l y i n g c o n c r e t e d a t a s t r u c t u r e s w i t h t h e a p p r o p r i a t e n a m e s . S i n c e n a m i n g

    c a n b e t r e a t e d i n a u n i f o r m f a s h i o n , w e a r e a b l e t o a p p l y e x i s t i n g g e n e r i c p r o g r a m s

    t o n o v e l d a t a t y p e s . F i g u r e 1 c o n t a i n s a ( t i d i e d ) s e s s i o n f r o m t h e i m p l e m e n t a t i o n

    o f F I S h 2 l a n g u a g e t h a t i l l u s t r a t e s s o m e o f t h e s e i d e a s . L i n e s b e g i n n i n g w i t h > - | >

    a n d e n d i n g w i t h ; ; a r e i n p u t b y t h e p r o g r a m m e r . T h e o t h e r s a r e r e s p o n s e s f r o m

    t h e s y s t e m . A d a t a t y p e o f b i n a r y t r e e s i s d e c l a r e d . T h i s i n t r o d u c e s a n e w f u n c t o r

    t r e e w h i c h t a k e s t w o a r g u m e n t s . t r : t r e e ( i n t ; o a t ) i s a s m a l l e x a m p l e o f s u c h a

    t r e e . t r 2 i s o b t a i n e d b y m a p p i n g t h e f u n c t i o n s f a n d g o v e r t r . T h e g e n e r i c f u n c t i o n

    m a p 2 i s a s p e c i a l i s e d f o r m o f t h e g e n e r i c f u n c t i o n m a p w h o s e t y p e i s g i v e n i n ( 3 )

    i n S e c t i o n 1 . 2 . N o t e t h a t e v e n t h o u g h t r e e s a r e a n e w k i n d o f d a t a s t r u c t u r e t h e

    m a p p i n g a l g o r i t h m w o r k s i m m e d i a t e l y , w i t h o u t a n y f u r t h e r c o d i n g . T h e s e s s i o n

    c o n c l u d e s w i t h a n a p p l i c a t i o n o f t h e g e n e r i c a d d i t i o n f u n c t i o n p l u s w h i c h i s a b l e t o

    h a n d l e a n y d a t a s t r u c t u r e c o n t a i n i n g a n y k i n d o f n u m e r i c a l d a t a s u c h a s i n t e g e r s

    a n d o a t s .

  • 8/14/2019 Constructor Calculus

    3/20

    l e t e q u a l x y =

    m a t c h ( x ; y ) w i t h

    u n ; u n ! t r u e

    j ( x

    0

    ; x

    1

    ) ; ( y

    0

    ; y

    1

    ) ! ( e q u a l x

    0

    y

    0

    ) & & ( e q u a l x

    1

    y

    1

    )

    j i n l x

    0

    ; i n l y

    0

    ! e q u a l x

    0

    y

    0

    j i n r x

    0

    ; i n r y

    0

    ! e q u a l x

    0

    y

    0

    j ! f a l s e

    F i g . 2 . E q u a l i t y b y g e n e r i c p a t t e r n s

    1 . 1 T h e c o n s t r u c t o r c a l c u l u s

    C o n s i d e r a g e n e r i c e q u a l i t y f u n c t i o n . I n t u i t i v e l y , t w o d a t a s t r u c t u r e s a r e e q u a l i f t h e y

    a r e b u i l t u s i n g t h e s a m e c o n s t r u c t o r a n d t h e c o r r e s p o n d i n g c o n s t r u c t o r a r g u m e n t s

    a r e e q u a l . F i g u r e 2 p r e s e n t s a f r a g m e n t o f p s e u d o - c o d e w h i c h e m p l o y s t h e d e s i r e d

    s t y l e f o r j u s t t h r e e k i n d s o f d a t a s t r u c t u r e . u n i s t h e u n i q u e v a l u e o f u n i t t y p e ,

    ( x

    0

    ; x

    1

    ) i s t h e p a i r i n g p a i r x

    0

    x

    1

    o f x

    0

    a n d x

    1

    a n d i n l a n d i n r a r e t h e l e f t a n d r i g h t

    c o p r o d u c t i n c l u s i o n s ( & & i s t h e c o n j u n c t i o n o f b o o l e a n s ) . T h e s e a r e n o t a c t u a l l y

    p r i m i t i v e s o f t h e c o n s t r u c t o r c a l c u l u s b u t a r e f a m i l i a r t e r m s t h a t w i l l s e r v e h e r e t o

    i l l u s t r a t e t h e p r i n c i p l e s . T h e a c t u a l p r o g r a m f o r e q u a l i t y i s g i v e n i n F i g u r e 6 .

    S o m e s u c h a l g o r i t h m i s s u p p o r t e d b y t h e e q u a l i t y t y p e s i n S t a n d a r d M L M T 9 1 ] .

    I t i s n o t , h o w e v e r , t y p a b l e a s a p r o g r a m i n M L b e c a u s e t h e p a t t e r n s f o r u n , p a i r a n d

    i n l h a v e i n c o m p a t i b l e t y p e s . G e n e r i c p a t t e r n - m a t c h i n g m u s t b e a b l e t o b r a n c h o n

    a n y c o n s t r u c t o r , o f a n y t y p e . T h i s r e q u i r e m e n t g e n e r a t e s a c a s c a d e o f c h a l l e n g e s f o r

    t h e c o n s t r u c t i o n o f t h e t e r m s t h e m s e l v e s , a n d m o r e e s p e c i a l l y f o r t h e t y p e d e r i v a t i o n

    r u l e s .

    G e n e r i c p a t t e r n - m a t c h i n g c a n b e r e p r e s e n t e d b y i t e r a t i n g a p a r t i c u l a r f o r m o f

    c a s e a n a l y s i s c a l l e d f u n c t i o n e x t e n s i o n

    u n d e r c a p p l y f e l s e g

    w h e r e c i s a c o n s t r u c t o r , f i s t h e s p e c i a l i s a t i o n f u n c t i o n a p p l i e d i f t h e a r g u m e n t i s

    b u i l t u s i n g c a n d g i s t h e d e f a u l t f u n c t i o n . I t s a p p l i c a t i o n t o a t e r m t m a y b e w r i t t e n

    a s u n d e r c a p p l y f e l s e g t o t . F o r e x a m p l e , t h e e q u a l i t y d e n e d i n F i g u r e 2 c a n b e

    d e - s u g a r e d t o a s e r i e s o f e x t e n s i o n s t h a t e n d s w i t h

    u n d e r i n r a p p l y x

    0

    : u n d e r i n r a p p l y y

    0

    : ( e q u a l x

    0

    y

    0

    ) e l s e y : f a l s e

    e l s e x ; y : f a l s e :

    T h e s p e c i a l i s a t i o n r u l e i s

    u n d e r c a p p l y f e l s e g t o c t

    0

    : : : t

    n 1

    > f t

    0

    : : : t

    n 1

    ( 1 )

    w h e r e n i s t h e n u m b e r o f a r g u m e n t s t a k e n b y t h e c o n s t r u c t o r c . T h e d e f a u l t r u l e i s

    u n d e r c a p p l y f e l s e g t o t > g t i f t c a n n o t b e c o n s t r u c t e d b y c . ( 2 )

    I t a p p l i e s i f t i s c o n s t r u c t e d b y s o m e o t h e r c o n s t r u c t o r o r i s a n e x p l i c i t f u n c t i o n .

    U n l i k e m o s t o t h e r a p p r o a c h e s t o g e n e r i c p r o g r a m m i n g , e . g . A C P R 9 5 , H i n 0 0 ] , e v a l -

    u a t i o n d o e s n o t r e q u i r e e x p l i c i t t y p e i n f o r m a t i o n .

    A t y p e f o r t h i s e x t e n s i o n i s g i v e n b y a t y p e f o r t h e d e f a u l t f u n c t i o n g : T ! T

    0

    .

    I f e x t e n s i o n w e r e l i k e a s t a n d a r d c a s e a n a l y s i s o r i t s u n d e r l y i n g c o n d i t i o n a l t h e n

    t h e s a m e t y p e c o n s t r a i n t s w o u l d a l s o s u c e f o r f . H o w e v e r , f n e e d o n l y b e a p p l i e d

    t o t e r m s t c o n s t r u c t e d b y c . I f c h a s g i v e n t y p e s c h e m e

    c : 8

    c

    : T

    0

    ! : : : ! T

    n 1

    ! T

    n

  • 8/14/2019 Constructor Calculus

    4/20

    t h e n s p e c i a l i s a t i o n t o f i s p o s s i b l e w h e n e v e r T

    n

    a n d T h a v e b e e n u n i e d b y s o m e

    s u b s t i t u t i o n , w i t h o u t l o s s o f g e n e r a l i t y t h e i r m o s t g e n e r a l u n i e r . H e n c e f m u s t

    h a v e t y p e ( T

    0

    ! : : : ! T

    n 1

    ! T

    0

    ) .

    F o r e x a m p l e , t h e t y p e o f e q u a l i s t h e t y p e o f i t s u l t i m a t e d e f a u l t f u n c t i o n

    x : y : f a l s e : X ! Y ! b o o l

    w h e r e b o o l i s a t y p e r e p r e s e n t i n g b o o l e a n s , s a y 1 + 1 . T h e v a r i o u s s p e c i a l i s a t i o n s

    t a k e d i e r e n t t y p e s . F o r u n i t i s Y ! b o o l ( a s u n t a k e s n o a r g u m e n t s ) . F o r p a i r :

    X

    0

    ! X

    1

    ! X

    0

    X

    1

    i t i s X

    0

    ! X

    1

    ! Y ! b o o l . F o r i n l : X

    0

    ! X

    0

    + X

    1

    i t i s

    X

    0

    ! Y ! b o o l .

    S e v e r a l p o i n t s e m e r g e f r o m t h i s d i s c u s s i o n . F i r s t , c o n s t r u c t o r s h a v e a n a s s o c i a t e d

    t y p e s c h e m e w h i c h m u s t b e p r i n c i p a l ( m o s t g e n e r a l ) f o r s p e c i a l i s a t i o n t o p r e s e r v e

    t y p i n g . S e c o n d , t h e t y p e d e r i v a t i o n r u l e s r e l y o n t h e e x i s t e n c e o f m o s t g e n e r a l

    u n i e r s . T h i r d , t h e d e n i t i o n o f g e n e r i c e q u a l i t y e m p l o y s p o l y m o r p h i c r e c u r s i o n ,

    e . g . r e c u r s i v e c a l l s t o e q u a l a r e i n s t a n t i a t e d t o p r o d u c t a n d c o p r o d u c t t y p e s e t c .

    S e v e r a l c o n c l u s i o n s c a n b e d r a w n f r o m t h e s e o b s e r v a t i o n s . T h e n e e d f o r m o s t

    g e n e r a l u n i e r s i s n o t a n o n e r o u s r e s t r i c t i o n i n p r a c t i c e , b u t t h e i r e x i s t e n c e c a n n o t

    b e g u a r a n t e e d i f t y p e s c h e m e s 8 X : T a r e c o n s i d e r e d t o b e t y p e s , a s i n s y s t e m F

    G L T 8 9 ] . H e n c e t y p e s c h e m e s a n d t y p e s m u s t b e k e p t i n s e p a r a t e c l a s s e s . I n o t h e r

    w o r d s , d a t a t y p e s c a n n o t h e r e b e r e d u c e d t o f u n c t i o n s a n d q u a n t i c a t i o n . A l s o , t h e

    p r e s e n c e o f p o l y m o r p h i c r e c u r s i o n m e a n s t h a t n o t e v e r y t e r m w i l l h a v e a p r i n c i p a l

    t y p e s c h e m e H e n 9 3 ] . A s c o n s t r u c t o r s a r e r e q u i r e d t o h a v e t h e m i t f o l l o w s t h a t c o n -

    s t r u c t o r s m u s t b e d i s t i n g u i s h a b l e f r o m t e r m s i n g e n e r a l . C o n c e r n i n g t y p e i n f e r e n c e ,

    w e s h a l l s e e t h a t t h e r e i s p o w e r f u l a n d p r a c t i c a l t y p e i n f e r e n c e a l g o r i t h m , w h i c h

    o n l y r e q u i r e s t y p e s t o b e g i v e n w h e n d e n i n g g e n e r i c f u n c t i o n s ( w h i c h i s p r o b a b l y

    a g o o d t h i n g t o d o a n y w a y ) b u t n o t w h e n a p p l y i n g t h e m .

    1 . 2 F u n c t o r i a l t y p e s

    N o w l e t u s c o n s i d e r t h e t h e d a t a t y p e s . I t h a s l o n g b e e n r e c o g n i s e d t h a t d a t a t y p e s

    c a n b e u n d e r s t o o d s e m a n t i c a l l y a s t h e a p p l i c a t i o n o f a f u n c t o r t o a t y p e G a 7 7 ] .

    V e r y b r i e y , a f u n c t o r F : C ! D b e t w e e n c a t e g o r i e s C a n d D s e n d s e a c h a r r o w

    ( o r f u n c t i o n ) f : X ! Y o f C t o a n a r r o w F f : F X ! F Y o f D i n a w a y t h a t

    p r e s e r v e s c o m p o s i t i o n o f a r r o w s a n d t h e i r i d e n t i t i e s . F f i s t h e m a p p i n g o f f r e l a t i v e

    t o F . T h e r e h a v e b e e n s e v e r a l a p p r o a c h e s t o r e p r e s e n t i n g f u n c t o r s i n p r o g r a m m i n g

    l a n g u a g e s s t a r t i n g w i t h C h a r i t y C F 9 2 ] . B a s i c a l l y , t h e y c a n b e r e p r e s e n t e d e i t h e r

    a s t y p e c o n s t r u c t o r s o r t r e a t e d a s a n e w s y n t a c t i c c l a s s s i m i l a r t o t h e t y p e s .

    T h e f o r m e r a p p r o a c h i s l e s s r a d i c a l , a n d c a n b e i n c o r p o r a t e d i n t o e x i s t i n g l a n -

    g u a g e s r e l a t i v e l y e a s i l y , e . g . H a s k e l l s u p p o r t s a t y p e c l a s s o f f u n c t o r s . I t d o e s , h o w -

    e v e r , h a v e s e v e r a l l i m i t a t i o n s . F i r s t , t h e r e a r e t y p e c o n s t r u c t o r s w h i c h a r e n o t f u n c -

    t o r s . H e n c e , m a n y o p e r a t i o n s , s u c h a s m a p p i n g , c a n n o t b e a p p l i e d t o a n a r b i t r a r y

    t y p e c o n s t r u c t o r . F o r e x a m p l e , t h e t y p e c o n s t r u c t o r t h a t t a k e s X t o X ! X i s

    c o n t r a v a r i a n t i n t h e r s t o c c u r e n c e o f t h e t y p e X s o t h a t t o p r o d u c e a f u n c t i o n

    f r o m X ! X t o Y ! Y w o u l d r e q u i r e a f u n c t i o n f r o m Y t o X a s w e l l a s o n e f r o m

    X t o Y .

    S e c o n d , a n d m o r e f u n d a m e n t a l , i s t h e d i c u l t y o f d e t e r m i n i n g w h e r e t h e b o u n d -

    a r y b e t w e e n t h e s t r u c t u r e a n d t h e d a t a l i e s . I f t h e f u n c t i o n f i s t o b e m a p p e d a c r o s s

    a t e r m o f t y p e G F X t h e n i t i s n o t c l e a r i f f i s t o b e a p p l i e d t o v a l u e s o f t y p e X

    o r t o v a l u e s o f t y p e F X . T h i s c a n o n l y b e r e s o l v e d b y e x p l i c i t t y p e i n f o r m a t i o n a t

    t h e p o i n t o f a p p l i c a t i o n , w h i c h c o u l d b e q u i t e o n e r o u s i n p r a c t i c e .

    A t h i r d p r o b l e m c o n c e r n s h a n d l i n g d a t a s t r u c t u r e s t h a t c o n t a i n s e v e r a l k i n d s o f

    d a t a . T h i s w o u l d b e e a s y i f o n e c o u l d r s t d e n e m a p 1 f o r f u n c t o r s o f o n e a r g u m e n t

    i n i s o l a t i o n , a n d t h e n m a p 2 f o r f u n c t o r s o f t w o a r g u m e n t s , e t c . b u t t h e p r e s e n c e o f

  • 8/14/2019 Constructor Calculus

    5/20

    i n d u c t i v e d a t a t y p e s l i k e l i s t s a n d t r e e s m a k e i t n e c e s s a r y t o h a n d l e s i m u l t a n e o u s l y

    f u n c t o r s o f a r b i t r a r y a r i t y . F o r e x a m p l e , m a p 1 f a p p l i e d t o a l i s t c o n s h t i n t r o d u c e s

    m a p 2 ( f ; m a p 1 f ) ( h ; t ) . I n t h e s i m p l e s t c a s e s t h e p r o b l e m c a n b e a v o i d e d b y p r o v i d -

    i n g a f u n c t i o n p m a p f o r m a p p i n g o v e r p o l y n o m i a l s i n t w o v a r i a b l e s J a y 9 5 a , J J 9 7 ] b u t

    o n e c a n e a s i l y c o n s t r u c t e x a m p l e s w h i c h r e q u i r e m a p p i n g o f t h r e e o r m o r e f u n c t i o n s .

    T h e a l t e r n a t i v e a p p r o a c h , o f i n t r o d u c i n g f u n c t o r s a s a n e w s y n t a c t i c c l a s s , w a s

    i n t r o d u c e d i n f m l . N o w m a p p i n g i s a l w a y s d e n e d , a n d f u n c t o r c o m p o s i t i o n i s

    e x p l i c i t , s o t h a t ( G F ) X a n d G ( F X ) a r e d i s t i n c t t y p e s w i t h d i s t i n c t b e h a v i o u r u n d e r

    m a p p i n g . U n f o r t u n a t e l y , t h e s y s t e m r e q u i r e d e x p l i c i t a r i t y c o n s t a n t s f o r f u n c t o r s

    a n d c o m b i n a t o r s w h i c h w a s o n e r o u s f o r p r o g r a m m i n g . N o w t h e f u n c t o r i a l t y p e

    s y s t e m s u p p o r t s a r i t y v a r i a b l e s a n d p o l y m o r p h i s m i n t h e a r i t i e s o f f u n c t o r s , a s w e l l

    a s i n t h e f u n c t o r s t h e m s e l v e s . F o r e x a m p l e , t h e b i n a r y p r o d u c t f u n c t o r i s r e p l a c e d

    b y a n i t e p r o d u c t f u n c t o r P : : m ! 1 w h e r e m i s a n a r b i t r a r y a r i t y . I n g e n e r a l ,

    a f u n c t o r F h a s k i n d m ! n w h e r e m a n d n a r e b o t h a r i t i e s . W h e n m ! n i s

    0 ! 1 t h e n F i s a t y p e . W h e n m i s 0 t h e n F i s a n n - t u p l e o f t y p e s . T h e s a m e a r i t y

    p o l y m o r p h i s m a p p e a r s i n t e r m s , e . g . t h e f a m i l y o f m a p p i n g c o m b i n a t o r s m a p

    m

    o f

    f m l h a v e b e e n r e p l a c e d b y a s i n g l e g e n e r i c f u n c t i o n

    m a p : 8 n : 8 F : : n ! 1 ; X : : n ; Y : : n : P ( X ! Y ) ! F X ! F Y ( 3 )

    w h i c h i s p o l y m o r p h i c i n t h e c h o i c e o f f u n c t o r F a n d i t s a r i t y n a s w e l l a s t h e

    a r g u m e n t t y p e s r e p r e s e n t e d b y t h e t u p l e s X a n d Y . K i n d i n f e r e n c e m e a n s t h a t i t

    i s r a r e l y n e c e s s a r y t o s p e c i f y t h e k i n d s e x p l i c i t l y .

    T h e r e i s a n o n g o i n g t e n s i o n b e t w e e n t h e f u n c t o r s , a s r e p r e s e n t a t i v e s o f d a t a

    s t r u c t u r e s , a n d t y p e s , a s r e p r e s e n t a t i v e o f e x e c u t a b l e p r o g r a m s . O f c o u r s e , f u n c t i o n

    t y p e s a r e n o t d a t a t y p e s : w e c a n n o t d e n e a m e a n i n g f u l e q u a l i t y o r m a p p i n g o v e r

    t h e m . ( I f w e t r e a t l a m b d a - b i n d i n g a s a c o n s t r u c t o r t h e n w e d e r i v e m e r e s y n t a c t i c

    e q u a l i t y o f f u n c t i o n s ) . S o w e m u s t c o n s i d e r h o w t o r e l a t e a s y s t e m o f f u n c t o r s ,

    f o r b u i l d i n g d a t a t y p e s , w i t h a t y p e s y s t e m d e s i g n e d t o s u p p o r t p r o g r a m m i n g w i t h

    f u n c t i o n s . I n f m l t h e f u n c t o r s a n d t y p e s a r e k e p t i n s e p a r a t e s y n t a c t i c c l a s s e s . H e r e ,

    t h e n e e d f o r v a r i a b l e s t h a t r e p r e s e n t t u p l e s o f t y p e s ( o f v a r i a b l e a r i t y ) d r i v e s u s t o

    r e g a r d b o t h t y p e s a n d t u p l e s o f t y p e s a s s p e c i a l k i n d s o f f u n c t o r s . N o t e , h o w e v e r ,

    t h a t o n l y t y p e s w i l l h a v e a s s o c i a t e d t e r m s . T h a t i s , i f t i s a t e r m w h o s e t y p e i s t h e

    f u n c t o r F t h e n F : : 0 ! 1 .

    S o t h e t e n s i o n h a s s h i f t e d t o t h e s t a t u s o f t h e f u n c t o r o f f u n c t i o n s F ! G . W h e n

    X a n d Y a r e t y p e s t h e n o f c o u r s e X ! Y i s a t y p e . M o r e g e n e r a l l y , i f X a n d Y a r e n -

    t u p l e s o f t y p e s t h e n s o i s X ! Y a s w h e n t y p i n g m a p a b o v e . C a t e g o r y t h e o r y i s a b l e

    t o p r o v i d e s o m e g u i d a n c e f o r t h e g e n e r a l s i t u a t i o n . T h e a p p r o p r i a t e n o t i o n o f a r r o w

    b e t w e e n f u n c t o r s i s a n a t u r a l t r a n s f o r m a t i o n . A n a t u r a l t r a n s f o r m a t i o n : F ! G

    b e t w e e n f u n c t o r s F ; G : C ! D i s g i v e n b y a f a m i l y o f a r r o w s

    X

    : F X ! G X

    i n d e x e d b y t h e o b j e c t s o f C s u c h t h a t f o r e a c h a r r o w f : X ! Y o f C w e h a v e

    G f :

    X

    =

    Y

    : F f . T h i s i s a k i n d o f p a r a m e t r i c i t y c o n d i t i o n R e y 8 5 ] .

    T h e d e n i t i o n o f t h e e x p o n e n t i a l , o r f u n c t i o n o b j e c t , i n a c a t e g o r y c a n b e g e n e r -

    a l i s e d t o d e n e a n o b j e c t i n D t h a t r e p r e s e n t s t h e n a t u r a l t r a n s f o r m a t i o n s f r o m F t o

    G J a y 9 6 ] . T h u s , i f F ; G : : m ! n a r e f u n c t o r s i n o u r s y s t e m t h e n F ! G : 0 ! n i s

    t h e f u n c t o r o f f u n c t i o n s f r o m F t o G . W h e n m i s n o t n e c e s s a r i l y 0 w e m a y c a l l t h i s

    t h e f u n c t o r o f n a t u r a l t r a n s f o r m a t i o n s f r o m F t o G a n d d e s c r i b e i t s t e r m s s i m i l a r l y .

    N o t e t h a t t h e f u n c t i o n f u n c t o r n e v e r t a k e s a n y a r g u m e n t s . I f i t d i d t h e n w e w o u l d

    r u n i n t o t h e c o n t r a v a r i a n c e p r o b l e m a g a i n . T h e r e i s a c e r t a i n s i m i l a r i t y b e t w e e n t h e

    t y p e F ! G a n d t h e t y p e s c h e m e 8 X : F X ! G X . H o w e v e r , t h e t y p e o f m a p s h o w s

    t h a t F ! G m a y a p p e a r w i t h i n t y p e s w h e r e t y p e s c h e m e s w o u l d n o t b e a l l o w e d .

    W h e n X a n d Y a r e t y p e s t h e n t e r m s o f t y p e X ! Y c a n b e b u i l t b y l a m b d a -

    a b s t r a c t i o n i n t h e u s u a l w a y . T h i s w i l l n o t w o r k f o r a r b i t r a r y f u n c t o r s F ; G : : m ! n

    a s i n g e n e r a l t h e r e a r e n o t e r m s o f t y p e F o r G t o b e m a n i p u l a t e d . H o w e v e r , a p p l y i n g

  • 8/14/2019 Constructor Calculus

    6/20

    t h e n i t e p r o d u c t f u n c t o r P : : n ! 1 y i e l d s t h e t y p e P ( F ! G ) : : 0 ! 1 w h i c h m a y

    h a v e t e r m s g i v e n b y t u p l e s o f f u n c t i o n s , a s i n t h e r s t a r g u m e n t t o m a p a b o v e .

    A t t h i s p o i n t w e a r e a b l e t o a n s w e r t h e t w o o r i g i n a l q u e s t i o n s . T h e d a t a t y p e s

    a r e t h e t y p e s b u i l t f r o m f u n c t o r s t h a t d o n o t e m p l o y t h e f u n c t i o n t y p e c o n s t r u c t o r .

    T h e c o n s t r u c t o r s a r e t h e i n t r o d u c t i o n s y m b o l s f o r t h e s e f u n c t o r s . T h e y a r e a b l e t o

    s u p p o r t t h e e x t e n s i o n m e c h a n i s m t h a t i s u s e d t o d e n e g e n e r i c f u n c t i o n s .

    1 . 3 A d d i t i o n a l c o n s t a n t f u n c t o r s

    W e s h a l l c o n s i d e r t w o a d d i t i o n a l f e a t u r e s t h a t i m p r o v e t h e e x p r e s s i v e p o w e r o f t h e

    c o n s t r u c t o r c a l c u l u s . T h e r s t p r o v i d e s m a c h i n e r y n e c e s s a r y t o s u p p o r t f u n c t o r s f o r

    a b s t r a c t d a t a t y p e s , l i k e t r e e i n F i g u r e 1 . T h e s e c o n d i s i n t r o d u c t i o n o f d a t u m t y p e s

    f o r i n t e g e r s , o a t s , e t c . B o t h m u s t b e i n t r o d u c e d i n a w a y t h a t s u p p o r t s g e n e r i c

    p r o g r a m m i n g .

    1 . 4 C o n t e n t s o f t h e p a p e r

    T h e f o c u s o f t h i s p a p e r i s t o i n t r o d u c e t h e m a c h i n e r y n e c e s s a r y f o r t h i s a p p r o a c h

    t o g e n e r i c p r o g r a m m i n g w i t h e n o u g h e x a m p l e s t o i l l u s t r a t e i t s p o w e r . H o w e v e r , w e

    s h a l l a l s o p r o v e a n u m b e r o f s t a n d a r d r e s u l t s : t h e e x i s t e n c e o f m o s t g e n e r a l u n i e r s ;

    t h a t r e d u c t i o n p r e s e r v e s t y p i n g ; a n d r e d u c t i o n i s C h u r c h - R o s s e r . A l s o , t h e c a l c u l u s

    s u p p o r t s a p o w e r f u l t y p e i n f e r e n c e a l g o r i t h m .

    T h e s t r u c t u r e o f t h e p a p e r i s a s f o l l o w s . S e c t i o n 2 i n t r o d u c e s t h e a r i t i e s a n d

    k i n d s . S e c t i o n 3 i n t r o d u c e s t h e f u n c t o r s a n d t y p e s a n d t h e i r c o n s t r u c t o r s . S o m e

    s i m p l e e x a m p l e s o f f u n c t o r s , i n c l u d i n g l i s t s a n d b i n a r y t r e e s w i l l b e p r o d u c e d a l o n g

    t h e w a y . S e c t i o n 4 i n t r o d u c e s t h e f u l l t e r m l a n g u a g e , i n c l u d i n g t h e e x t e n s i o n s . S e c -

    t i o n 5 i n t r o d u c e s t h e r e d u c t i o n r u l e s a n d e s t a b l i s h e s t h a t r e d u c t i o n s a t i s e s s u b j e c t

    r e d u c t i o n a n d i s C h u r c h - R o s s e r . S e c t i o n 6 i n t r o d u c e s a c o n s t r u c t o r f o r c r e a t i n g e x -

    c e p t i o n s ( a s w h e n t a k i n g t h e h e a d o f a n e m p t y l i s t ) w h i c h c a n t h e n b e h a n d l e d b y

    e x t e n s i o n s . S e c t i o n 7 p r o v i d e s e x a m p l e s o f g e n e r i c f u n c t i o n s , i n c l u d i n g p r o g r a m s

    f o r e q u a l i t y , m a p p i n g a n d f o l d i n g . S e c t i o n 8 d e v e l o p s a n e e c t i v e t y p e i n f e r e n c e

    a l g o r i t h m . S e c t i o n 9 i n t r o d u c e s t a g g e d t e r m s f o r a b s t r a c t d a t a t y p e s . S e c t i o n 1 0

    i n t r o d u c e s t h e d a t u m t y p e s . S e c t i o n 1 1 d r a w s c o n c l u s i o n s a n d l o o k s t o f u t u r e w o r k .

    A d d i t i o n a l d e t a i l c a n b e f o u n d i n t h e a c c o m p a n y i n g r e p o r t J a y 0 0 ] .

    2 K i n d s

    T u p l e s o f t y p e s w i l l b e c h a r a c t e r i s e d b y t h e i r a r i t i e s . T h e a b s e n c e o f a n y t y p e s i s

    r e p r e s e n t e d b y t h e a r i t y 0 , a s i n g l e t y p e b y t h e a r i t y 1 . T h e p a i r i n g o f a n m - t u p l e

    a n d a n n - t u p l e o f t y p e s w i l l h a v e a r i t y ( m ; n ) . H e n c e t h e a r i t i e s a r e g e n e r a t e d b y

    m ; n : : = a j 0 j 1 j ( m ; n )

    w h e r e a i s a n a r i t y v a r i a b l e . W e w i l l i n f o r m a l l y d e n o t e ( 1 ; 1 ) b y 2 . N o t e , h o w e v e r ,

    t h a t 3 w o u l d b e a m b i g u o u s a s ( 2 ; 1 ) a n d ( 1 ; 2 ) a r e d i s t i n c t a r i t i e s ( a s a r e ( m ; 0 ) a n d

    m ) . T h e i m p o r t a n c e o f t h i s d i s t i n c t i o n i s t h a t w e w i l l b e a b l e t o i n d e x t y p e s w i t h i n

    a t u p l e b y a s e q u e n c e o f l e f t s a n d r i g h t s i n s t e a d o f b y a n i n t e g e r , a n d s o w i l l o n l y

    n e e d a p a i r o f c o n s t r u c t o r s i n s t e a d o f a n i n n i t e f a m i l y .

    T h e k i n d s ( m e t a - v a r i a b l e k ) a r e u s e d t o c h a r a c t e r i s e t h e f u n c t o r s . T h e y a r e o f

    t h e f o r m m ! n w h e r e m a n d n a r e a r i t i e s . I f F i s a f u n c t o r t h a t a c t s o n m - t u p l e s

    o f t y p e s a n d p r o d u c e s n - t u p l e s o f t y p e s t h e n i t h a s k i n d m ! n .

    A r i t y c o n t e x t s , s u b s t i t u t i o n s a n d u n i e r s a r e d e n e d i n t h e u s u a l w a y .

  • 8/14/2019 Constructor Calculus

    7/20

    3 F u n c t o r s a n d t h e i r c o n s t r u c t o r s

    A s i n g l e s y n t a c t i c c l a s s r e p r e s e n t s b o t h f u n c t o r s i n g e n e r a l a n d t y p e s . E a c h f u n c t o r

    F h a s a n a s s o c i a t e d k i n d k , w r i t t e n F : : k . T h e t y p e s a r e d e n e d t o b e t h o s e f u n c t o r s

    T w h o s e k i n d i s T : : 0 ! 1 . W e s h a l l u s e t h e m e t a - v a r i a b l e s F ; G a n d H f o r f u n c t o r s

    a n d T f o r t y p e s . W h e n F : : 0 ! n t h e n i t i s a t u p l e o f t y p e s a n d w e m a y w r i t e i t s

    k i n d i n g a s F : : n . I f a l l t h e f u n c t o r s i n v o l v e d i n a n e x p r e s s i o n a r e t y p e s w e m a y

    o m i t t h e i r k i n d s a l t o g e t h e r . T h e t y p e s c h e m e s ( m e t a - v a r i a b l e S ) a r e o b t a i n e d b y

    q u a n t i f y i n g t y p e s w i t h r e s p e c t t o b o t h a r i t y v a r i a b l e s a n d k i n d e d f u n c t o r v a r i a b l e s .

    T h e f u n c t o r s a n d r a w t y p e s c h e m e s a r e f o r m a l l y i n t r o d u c e d i n F i g u r e 3 . L e t u s

    i n t r o d u c e t h e m i n f o r m a l l y r s t .

    T h e f u n c t o r s ( s t r i p p e d o f t h e i r k i n d s ) a n d t y p e s c h e m e s a r e g i v e n b y

    F ; G ; T : : = X j P j C j K j ( F ; G ) j L j R j G F j F j F ! G

    S : : = T j 8 X : : k : S j 8 a : S

    X r e p r e s e n t s a f u n c t o r v a r i a b l e . T h e n i t e p r o d u c t f u n c t o r P h a s k i n d P : : m ! 1

    f o r a n y a r i t y m . W h e n m i s 0 t h e n P i s a t y p e , n a m e l y t h e u n i t t y p e . I t s c o n s t r u c t o r

    i s

    i n t r U : P :

    U n f o r t u n a t e l y , t h e c o n s t r u c t o r s d o n o t y e t h a v e d e s c r i p t i v e n a m e s . W h e n m i s 1

    t h e n P i s t h e u n a r y p r o d u c t . I t s c o n s t r u c t o r i s

    i n t r E : 8 X : X ! P X :

    W h e n m i s ( p ; q ) t h e n i t s c o n s t r u c t o r i s

    i n t r F : 8 m ; n : 8 X : : m ; Y : : n : P X ! P Y ! P ( X ; Y ) :

    T h u s , t h e u s u a l , b i n a r y p a i r i n g i s g i v e n b y p a i r x y = i n t r F ( i n t r E x ) ( i n t r E y ) . T h e

    i n t r E ' s c o n v e r t r a w d a t a i n t o s i m p l e d a t a s t r u c t u r e s ( o n e - t u p l e s ) w h i c h a r e t h e n

    c o m b i n e d u s i n g i n t r F . W e m a y w r i t e ( x ; y ) f o r p a i r x y f r o m n o w o n .

    T h e n i t e c o p r o d u c t f u n c t o r C : : m ! 1 i s d u a l t o t h e p r o d u c t . W h e n m i s 0

    t h e n C i s t h e e m p t y t y p e , a n d h a s n o c o n s t r u c t o r . W h e n m i s 1 t h e n t h e c o n s t r u c t o r

    i s

    i n t r C : 8 X : X ! C X :

    W h e n m i s ( p ; q ) t h e n t h e c o p r o d u c t h a s t w o i n c l u s i o n s

    i n t r A : 8 m ; n : 8 X : : m ; Y : : n : C X ! C ( X ; Y )

    i n t r B : 8 m ; n : 8 X : : m ; Y : : n : C Y ! C ( X ; Y ) :

    T h e u s u a l i n c l u s i o n s t o t h e b i n a r y c o p r o d u c t m a y t h u s b e w r i t t e n a s i n l x =

    i n t r A ( i n t r C x ) a n d i n r y = i n t r B ( i n t r C y )

    T h e f u n c t o r s P a n d C c o n v e r t t u p l e s o f t y p e s i n t o t y p e s . N o w w e m u s t c o n s i d e r

    h o w t o b u i l d t h e f o r m e r . F i r s t w e h a v e e m p t y t u p l e s o f t y p e s , c o n s t r u c t e d b y t h e

    k i l l f u n c t o r K : : m ! 0 . I t i s u s e d t o c o n v e r t a t y p e T i n t o a \ c o n s t a n t f u n c t o r "

    t h a t i g n o r e s i t s a r g u m e n t . I t s c o n s t r u c t o r i s

    i n t r K : 8 m : 8 X : : 1 ; Y : : m : X ! ( X K ) Y :

    F o r e x a m p l e , t h e e m p t y l i s t i s b u i l t u s i n g i n t r K i n t r U : ( P K ) ( A ; X ) w h e r e A i s t h e

    t y p e o f t h e l i s t e n t r i e s a n d X i s t h e l i s t t y p e i t s e l f .

    I f F : : p ! m a n d G : : p ! n a r e f u n c t o r s a b l e t o a c t o n t h e s a m e a r g u m e n t s

    t h e n t h e i r p a i r i n g i s ( F ; G ) : : p ! ( m ; n ) . T h e r e a r e n o c o n s t r u c t o r s f o r p a i r s o f

    f u n c t o r s a s t h e y a r e n o t t y p e s . R a t h e r , w e s h a l l h a v e t o a d a p t t h e c o n s t r u c t o r s t o

    h a n d l e s i t u a t i o n s i n w h i c h f u n c t o r p a i r i n g i s r e l e v a n t .

  • 8/14/2019 Constructor Calculus

    8/20

    C o r r e s p o n d i n g t o f u n c t o r p a i r i n g w e h a v e l e f t a n d r i g h t f u n c t o r p r o j e c t i o n s

    L : : ( m ; n ) ! m a n d R : : ( m ; n ) ! n w i t h c o n s t r u c t o r s

    1

    i n t r L : 8 m ; n : 8 F : : m ! 1 ; X : : m ; Y : : n : F X ! ( F L ) ( X ; Y )

    i n t r R : 8 m ; n : 8 F : : n ! 1 ; X : : m ; Y : : n : F Y ! ( F R ) ( X ; Y ) :

    T h e y a r e u s e d t o i n t r o d u c e \ d u m m y " f u n c t o r a r g u m e n t s . F o r e x a m p l e , t o b u i l d

    l e a f x : t r e e ( A ; B ) f r o m s o m e t e r m x : A w e b e g i n w i t h

    i n t r L ( i n t r L ( i n t r E x ) ) : ( ( P L ) L ) ( ( A ; B ) ; t r e e ( A ; B ) )

    t o c o n v e r t i t i n t o a d a t a s t r u c t u r e b u i l t f r o m d a t a o f t y p e A ; B a n d t r e e ( A ; B ) .

    A p p l i c a t i o n o f i n t r E i n t r o d u c e s a f u n c t o r a p p l i c a t i o n w h i c h s u p p o r t s t h e t w o a p -

    p l i c a t i o n o f i n t r L . N o t e t h a t w e r e F t o b e e l i d e d f r o m t h e t y p e o f i n t r L t h e n t h e

    o u t e r m o s t a p p l i c a t i o n a b o v e w o u l d f a i l .

    T h e k i n d i n g o f L a n d R i s m a d e p o s s i b l e b y t h e w a y t h e a r i t i e s a r e s t r u c t u r e d .

    F o r e x a m p l e , w e h a v e L L ( 2 ; 1 ) ! 1 . B y c o n t r a s t , i n f m l a r i t i e s a r e g i v e n b y n a t u r a l

    n u m b e r s w h i c h m u s t t h e n b e u s e d t o i n d e x t h e p r o j e c t i o n f u n c t o r s s u c h a s

    3

    0

    : :

    3 ! 1 . T h i s i n d e x i n g t h e n l e a k s i n t o t h e t e r m l a n g u a g e s , w i t h o n e r o u s r e s u l t s .

    I f F : : m ! n a n d G : : n ! p a r e f u n c t o r s t h e n G F : : m ! p i s t h e i r c o m p o s i t e

    f u n c t o r . W h e n F i s a t y p e o r t u p l e o f t y p e s t h e n w e m a y s p e a k o f a p p l y i n g G t o

    F . C o m p o s i t i o n a s s o c i a t e s t o t h e r i g h t , s o t h a t G F X i s t o b e r e a d a s G ( F X ) . T h e

    a s s o c i a t e d c o n s t r u c t o r i s

    i n t r G : 8 m : 8 G : : 1 ! 1 ; F : : m ! 1 ; X : : m : G ( F X ) ! ( G F ) X :

    T h e r e s t r i c t i o n o n t h e k i n d o f G i s a c o n s e q u e n c e o f t h e t e n s i o n b e t w e e n f u n c t o r s

    a n d t y p e s d i s c u s s e d i n t h e i n t r o d u c t i o n . I t i s n e c e s s a r y t o b e a b l e t o d e n e f u n c t i o n s

    l i k e m a p i n S e c t i o n 7 . W e a l s o n e e d a c o n s t r u c t o r f o r h a n d l i n g c o m p o s i t e s i n v o l v i n g

    p a i r s o f f u n c t o r s , n a m e l y

    i n t r H : 8 m : 8 H : : 2 ! 1 ; F : : m ! 1 ; G : : m ! 1 : X : : m : H ( F X ; G X ) ! ( H ( F ; G ) ) X :

    W i t h t h e s t r u c t u r e a v a i l a b l e s o f a r w e c a n c o n s t r u c t a r b i t r a r y p o l y n o m i a l f u n c t o r s .

    N o w l e t u s c o n s i d e r t h e i r i n i t i a l a l g e b r a s . F o r e x a m p l e , l i s t s w i t h e n t r i e s o f t y p e A

    a r e o f t e n d e s c r i b e d a s a s o l u t i o n t o t h e d o m a i n i s o m o r p h i s m

    X

    =

    1 + A X

    g i v e n b y

    X

    : 1 + A X . H e r e

    X

    i n d i c a t e s t h a t t h e s m a l l e s t s o l u t i o n t o t h e d o m a i n i s o -

    m o r p h i s m i s s o u g h t , i . e . t h e i n d u c t i v e t y p e o r i n i t i a l a l g e b r a f o r t h e f u n c t o r F w h e r e

    F ( A ; X )

    =

    1 + A X . W e c a n r e p r e s e n t s u c h a n F a s f o l l o w s . A X i s j u s t P ( A ; X )

    a n d 1 b e c o m e s P w h i c h b e c o m e s ( P K ) ( A ; X ) . T h u s F = C ( P K ; P ) : : ( 1 ; 1 ) ! 1 .

    N o w w e m u s t r e p r e s e n t t h e i n i t i a l a l g e b r a c o n s t r u c t i o n . I n s t e a d o f i n t r o d u c i n g a t y p e

    v a r i a b l e X o n l y t o b i n d i t a g a i n , w e a d o p t t h e c o n v e n t i o n t h a t i t i s t h e s e c o n d a r g u -

    m e n t t o t h e f u n c t o r t h a t r e p r e s e n t s t h e r e c u r s i o n v a r i a b l e . T h a t i s , i f F : : ( m ; n ) ! n

    t h e n F : : m ! n . F o r e x a m p l e , l i s t

    p

    = C ( P K ; P ) : : 1 ! 1 i s a f u n c t o r f o r l i s t s .

    T h e c o r r e s p o n d i n g c o n s t r u c t o r i s

    i n t r I : 8 m : 8 F : : ( m ; 1 ) ! 1 ; X : : m : F ( X ; ( F ) X ) ! ( F ) X :

    F o r e x a m p l e , t h e e m p t y l i s t i s g i v e n b y n i l

    p

    = i n t r I ( i n t r H ( i n l ( i n t r K i n t r U ) ) ) .

    B i n a r y t r e e s c a n b e r e p r e s e n t e d b y t h e f u n c t o r ( P L ) L + ( P R ) L ( P R P R )

    c a l l e d t r e e

    c

    w h e r e ( P L ) L r e p r e s e n t s t h e l e a f d a t a , ( P R ) L r e p r e s e n t s t h e n o d e d a t a

    a n d P R r e p r e s e n t s t h e s u b - t r e e s .

    1

    I n e a r l i e r d r a f t s t h e r e w e r e f o u r c o n s t r u c t o r s h e r e . T h e o r i g i n a l i n t r L a n d i n t r R h a v e

    b e e n d r o p p e d a n d t h e i r n a m e s t a k e n b y t h e o t h e r t w o .

  • 8/14/2019 Constructor Calculus

    9/20

    L e t u s c o n s i d e r f u n c t i o n s b e t w e e n f u n c t o r s , o r n a t u r a l t r a n s f o r m a t i o n s . I f F : :

    m ! n a n d G : : m ! n a r e f u n c t o r s o f t h e s a m e k i n d t h e n F ! G : : 0 ! n

    i s t h e i r f u n c t i o n f u n c t o r . I f X a n d Y a r e t y p e s t h e n w e c a n b u i l d l a m b d a - t e r m s

    ( x : X ) : ( t : Y ) : X ! Y i n t h e u s u a l w a y b u t x i s n o t a d a t a c o n s t r u c t o r i n t h e

    f o r m a l s e n s e e m p l o y e d h e r e .

    W e c a n r e c o v e r a t y p e f r o m F ! G : : 0 ! n b y a p p l y i n g t h e p r o d u c t f u n c t o r

    P : : n ! 1 t o g e t P ( F ! G ) ( a s a p p e a r s i n t h e t y p e f o r m a p ) . C a n w e b u i l d a n y

    t e r m s o f s u c h t y p e s ? I f f

    i

    : X

    i

    ! Y

    i

    f o r i = 0 ; 1 t h e n t h e r e i s a p a i r

    ( f

    0

    ; f

    1

    ) : : P ( X

    0

    ! Y

    0

    ; X

    1

    ! Y

    1

    )

    w h o s e t y p e i s s t r u c t u r a l l y d i e r e n t t o P ( ( X

    0

    ; X

    1

    ) ! ( Y

    0

    ; Y

    1

    ) ) . T h e s o l u t i o n a d o p t e d

    i s t o e x p l o i t s e m a n t i c i n s i g h t s a n d a s s e r t t h e t y p e i d e n t i t y

    ( X

    0

    ; X

    1

    ) ! ( Y

    0

    ; Y

    1

    ) = ( X

    0

    ! Y

    0

    ; X

    1

    ! Y

    1

    ) :

    N o w l e t u s c o n s i d e r t h e f o r m a l s y s t e m s o f f u n c t o r s i n F i g u r e 3 .

    A r i t i e s ( m ; n )

    A : : : a

    a i n A

    A : : : 0 A : : : 1

    A : : : m A : : : n

    A : : : ( m ; n )

    F u n c t o r c o n t e x t s ( )

    A

    A ;

    : : : m : : : n

    ; X : : m ! n

    n i s n o t a p a i r , X 62 d o m ( )

    F u n c t o r s a n d t y p e s ( F ; G ; T )

    X : : m ! n

    ( X ) = m ! n

    F : : m ! n G : : m ! n

    F ! G : : 0 ! n

    : : : m

    P : : m ! 1

    : : : m

    C : : m ! 1

    : : : m

    K : : m ! 0

    F : : p ! m G : : p ! n

    ( F ; G ) : : p ! ( m ; n )

    : : : m : : : n

    L : : ( m ; n ) ! m

    : : : m : : : n

    R : : ( m ; n ) ! n

    F : : m ! n G : : n ! p

    G F : : m ! p

    F : : ( m ; n ) ! n

    F : : m ! n

    T y p e s c h e m e s ( S )

    T : : 0 ! 1

    T

    A ; A ; m ; S

    A ; ` 8 m S

    ; F : : m ! n S

    ` 8 F : : m ! n S

    F i g . 3 . T h e f u n c t o r i a l t y p e s y s t e m

    A f u n c t o r c o n t e x t A ; i s g i v e n b y a n a r i t y c o n t e x t A a n d a n i t e s e q u e n c e o f

    d i s t i n c t f u n c t o r v a r i a b l e s X w i t h a s s i g n e d k i n d s m ! n w h e r e n i s n o t o f t h e f o r m

  • 8/14/2019 Constructor Calculus

    10/20

    ( p ; q ) . T h i s r e s t r i c t i o n a r i s e s b e c a u s e t y p e i n f e r e n c e f o r p r o g r a m e x t e n s i o n s r e q u i r e s

    n e c o n t r o l o v e r t h e e e c t s o f s u b s t i t u t i o n s . T h e k e y c a s e i s w h e n a n a r i t y v a r i a b l e

    n i s r e p l a c e d b y a p a i r ( p ; q ) a n d t h e r e i s a f u n c t o r v a r i a b l e X : : m ! n . T o e n s u r e

    t h a t t h e a r i t y s u b s t i t u t i o n h a s a c h i e v e d i t s f u l l e e c t X m u s t b e r e p l a c e d b y ( Y ; Z )

    f o r s o m e f r e s h v a r i a b l e s Y : : m ! p a n d Z : : m ! q . W r i t e d o m ( ) f o r t h e s e t o f

    f u n c t o r v a r i a b l e s a p p e a r i n g i n .

    W e h a v e t h e f o l l o w i n g j u d g e m e n t f o r m s c o n c e r n i n g f u n c t o r c o n t e x t s , f u n c t o r s

    a n d c o n s t r u c t o r s . A ; a s s e r t s t h a t A ; i s a w e l l - f o r m e d f u n c t o r c o n t e x t . A ;

    F : : k a s s e r t s t h a t F i s a w e l l - f o r m e d f u n c t o r o f k i n d k i n f u n c t o r c o n t e x t A ; .

    A ; S a s s e r t s t h a t S i s a w e l l - f o r m e d t y p e s c h e m e i n f u n c t o r c o n t e x t A ; . T h e

    j u d g e m e n t c : S a s s e r t s t h a t t h e c o n s t r u c t o r c h a s t y p e s c h e m e S . W e s h a l l o f t e n

    w r i t e t h e c o n t e x t a s l e a v i n g t h e a r i t y c o n t e x t A i m p l i c i t , a n d m a y w r i t e : : : m

    w h e n A : : : m .

    T h e f r e e a n d b o u n d v a r i a b l e s o f a f u n c t o r o r s c h e m e a r e d e n e d i n t h e u s u a l

    w a y . T y p e s c h e m e s a r e d e n e d t o b e e q u i v a l e n c e c l a s s e s o f w e l l - f o r m e d r a w t y p e

    s c h e m e s u n d e r - c o n v e r s i o n o f b o u n d v a r i a b l e s . T h e q u a n t i c a t i o n 8 A ; : S o f a

    t y p e s c h e m e S b y a f u n c t o r c o n t e x t A ; i s d e n e d i n t h e o b v i o u s w a y a s a s e q u e n c e

    o f q u a n t i c a t i o n s b y t h e f u n c t o r s a n d a r i t i e s i n A ;

    A f u n c t o r s u b s t i t u t i o n i s g i v e n b y a n a r i t y s u b s t i t u t i o n

    a

    a n d a p a r t i a l f u n c -

    t i o n

    f

    f r o m f u n c t o r v a r i a b l e s t o f u n c t o r s . L e t A ; a n d A

    0

    ;

    0

    b e w e l l - f o r m e d

    f u n c t o r c o n t e x t s . D e n e : A ; ! A

    0

    ;

    0

    i f

    a

    : A ! A

    0

    a n d d o m ( ) i s c o n t a i n e d

    i n t h e d o m a i n o f

    f

    a n d f u r t h e r i f ( X ) = k t h e n

    0

    a

    f

    X : :

    a

    k . T h a t i s ,

    p r e s e r v e s k i n d s . N o t e t h a t i f n i s a n a r i t y v a r i a b l e s u c h t h a t

    a

    ( n ) = ( p ; q ) a n d

    X : m ! n t h e n

    f

    ( X ) m u s t b e s o m e p a i r ( F ; G ) b e c a u s e t h e v a r i a b l e X c a n n o t

    h a v e k i n d m ! ( p ; q ) i n

    0

    . T h e i m a g e o f i s t h e s e t o f a r i t y v a r i a b l e s a n d t h e s e t o f

    f u n c t o r v a r i a b l e s t h a t a r e f r e e i n a r i t i e s ( r e s p e c t i v e l y f u n c t o r s ) o f t h e f o r m u w h e r e

    u i s a v a r i a b l e i n t h e d o m a i n o f . T h e a c t i o n o f s u c h a e x t e n d s h o m o m o r p h i c a l l y

    t o a n y e x p r e s s i o n t h a t i s w e l l - f o r m e d i n c o n t e x t ( i n c l u d i n g t h o s e t o b e d e n e d

    b e l o w ) . C o m p o s i t i o n i s d e n e d a s f o r a r i t y s u b s t i t u t i o n s .

    L e m m a 1 . I f J h a s a d e r i v a t i o n a n d : !

    0

    i s a f u n c t o r s u b s t i t u t i o n

    t h e n

    0

    J a l s o h a s a d e r i v a t i o n .

    P r o o f . B y i n d u c t i o n o n t h e s t r u c t u r e o f J .

    T h e m o s t g e n e r a l u n i e r U ( F ; G ) o f a p a i r o f f u n c t o r s i s d e n e d a s u s u a l .

    T h e o r e m 1 . L e t F : : k a n d G : : k

    0

    b e w e l l - f o r m e d f u n c t o r s . I f F a n d G

    h a v e a u n i e r t h e n t h e y h a v e a m o s t g e n e r a l u n i e r .

    P r o o f . T h e p r o o f i s n o t q u i t e s t a n d a r d . N o t e t h a t i f a r i t y s u b s t i t u t i o n c a u s e s a

    f u n c t o r v a r i a b l e X t o h a v e k i n d m ! ( p ; q ) t h e n X m u s t b e r e p l a c e d b y a p a i r o f

    f u n c t o r v a r i a b l e s . A l s o , w h e n u n i f y i n g F

    0

    ! F

    1

    a n d ( G

    0

    ; G

    1

    ) t h e n l e t X

    0

    ; X

    1

    ; X

    2

    a n d X

    3

    b e f r e s h v a r i a b l e s a n d u n i f y F

    0

    w i t h ( X

    0

    ; X

    1

    ) a n d F

    1

    w i t h ( X

    2

    ; X

    3

    ) a n d G

    0

    w i t h X

    0

    ! X

    2

    a n d G

    1

    w i t h X

    1

    ! X

    3

    .

    3 . 1 D e n o t a t i o n a l s e m a n t i c s

    T h e d e n o t a t i o n a l s e m a n t i c s o f t h e s e s y n t a c t i c f u n c t o r s i s d e n e d a s f o l l o w s . L e t D b e

    a c a r t e s i a n c l o s e d l o c o s C o c 9 0 , J a y 9 5 b ] . T h e s e i n c l u d e a l l t o p o s e s t h a t h a v e a n a t u r a l

    n u m b e r s o b j e c t , s u c h a s S e t o r t h e e e c t i v e t o p o s H y l 8 2 ] , a n d a l s o c a t e g o r i e s u s e d

    i n d o m a i n t h e o r y s u c h a s ! - c o m p l e t e p a r t i a l o r d e r s . T h e y c a n b e t h o u g h t o f a s a

    m i n i m a l s e t t i n g i n w h i c h b o t h l i s t s a n d f u n c t i o n s a r e d e n a b l e .

    E a c h c l o s e d f u n c t o r F : : m ! n c a n b e i n t e r p r e t e d a s a f u n c t o r F ] ] : D

    m

    ! D

    n

    w h e r e D

    m

    r e p r e s e n t s t h e p o w e r o f D o f a r i t y m . F o r e x a m p l e , D

    ( 2 ; 1 )

    i s ( D D ) D .

  • 8/14/2019 Constructor Calculus

    11/20

    N o t e t h a t t h e s e p o w e r s i n h e r i t a l l o f t h e l o c o s s t r u c t u r e p o i n t w i s e . A l l o f t h e c o n -

    s t r u c t i o n s a r e g i v e n t h e i r s t r a i g h t f o r w a r d i n t e r p r e t a t i o n , p r o d u c t s a r e p r o d u c t s ,

    e t c . , t h e o n l y p o i n t b e i n g t o e s t a b l i s h t h e e x i s t e n c e o f i n i t i a l a l g e b r a s a n d o b j e c t s

    o f n a t u r a l t r a n s f o r m a t i o n s . F o r t h i s i t s u c e s t h a t t h e s e m a n t i c f u n c t o r s b e s h a p e l y

    o v e r l i s t s . T h e y a r e c l o s e d u n d e r a l l t h e r e q u i r e d c o n s t r u c t i o n s , i n c l u d i n g i n i t i a l

    a l g e b r a s J a y 9 5 b ] a n d o b j e c t s o f n a t u r a l t r a n s f o r m a t i o n s J a y 9 6 ] .

    T h e d e n o t a t i o n a l s e m a n t i c s o f t h e t y p e s c h e m e s h a s n o t y e t b e e n d e v e l o p e d b u t

    s h o u l d p r o v e a m e n a b l e t o t h e m e t h o d s d e v e l o p e d f o r f m l J B M 9 8 ] .

    3 . 2 K i n d i n f e r e n c e

    A k i n d i n g f o r a n u n k i n d e d f u n c t o r F i s a f u n c t o r c o n t e x t A ; a n d a k i n d k s u c h t h a t

    A ; F : : k . I t i s a p r i n c i p a l k i n d i n g f o r F i f f o r a n y o t h e r k i n d i n g A

    0

    ;

    0

    F : : k

    0

    t h e r e i s a n a r i t y s u b s t i t u t i o n : A ! A

    0

    s u c h t h a t k = k

    0

    .

    T h e o r e m 2 . I f a n u n k i n d e d f u n c t o r F h a s a k i n d i n g t h e n i t h a s a p r i n c i p a l k i n d i n g .

    P r o o f . T h e k i n d i n f e r e n c e a l g o r i t h m W f o l l o w s M i l n e r ' s a l g o r i t h m M i l 7 8 ] .

    A l g o r i t h m W t a k e s a f o u r - t u p l e ( A ; ; F ; k ) a n d t r i e s t o p r o d u c e a n a r i t y s u b -

    s t i t u t i o n : A ! A

    0

    s u c h t h a t A

    0

    ; F : : k . W e i n i t i a l i s e t h e c h o i c e s o f A ;

    a n d k w i t h f r e s h v a r i a b l e s a s f o l l o w s .

    A s s i g n e a c h f u n c t o r v a r i a b l e X i n F a k i n d w h o s e s o u r c e a n d t a r g e t a r e f r e s h

    k i n d v a r i a b l e s . L e t A b e s o m e s e q u e n c e o f t h e s e k i n d v a r i a b l e s a n d b e s o m e

    s e q u e n c e o f t h e k i n d e d f u n c t o r v a r i a b l e s c r e a t e d a b o v e . L e t k = m ! n b e a n o t h e r

    f r e s h k i n d .

    T h e a l g o r i t h m p r o c e e d s b y i n d u c t i o n o n t h e s t r u c t u r e o f F . T h e p r o o f s t h a t

    p r o d u c e s a p r i n c i p a l k i n d f o l l o w s t h e s a m e p a t t e r n . H e r e a r e t h e c a s e s .

    1 . F i s a f u n c t o r v a r i a b l e X . T h e n = U ( ( X ) ; k ) .

    2 . F i s ( G ; H ) . L e t n

    0

    a n d n

    1

    b e a p a i r o f f r e s h a r i t y v a r i a b l e s . L e t

    : A ! A

    0

    = U ( n ; ( n

    0

    ; n

    1

    ) )

    1

    : A

    0

    ! A

    0 0

    = W ( A

    0

    ; ; G ; ( m ! n

    0

    ) ) a n d

    2

    : A

    0 0

    ! A

    0 0 0

    = W ( A

    0 0

    ;

    1

    ; H ;

    1

    ( m ! n

    1

    ) ) :

    T h e n i s

    2

    1

    .

    3 . F i s G . T h e n = W ( A ; ; G ; ( m ; n ) ! n ) .

    4 . F i s F

    0

    ! F

    1

    . L e t m a n d n b e f r e s h a r i t y v a r i a b l e a n d l e t

    : A ! A

    0

    = U ( k ; 0 ! n )

    1

    : A

    0

    ! A

    0 0

    = W ( A

    0

    ; ; F

    0

    ; m ! n ) a n d

    2

    : A

    0 0

    ! A

    0 0 0

    = W ( A

    0 0

    ;

    1

    ; F

    1

    ; m ! n ) :

    T h e n i s

    2

    1

    .

    5 . F i s a c o n s t a n t o f k i n d k

    0

    . T h e n i s U ( k ; k

    0

    ) .

    4 T e r m s

    T h e r a w t e r m s a r e g i v e n b y

    t : : = x j t t j x : t j l e t x = t i n t j x ( x : t ) j c j u n d e r c a p p l y t e l s e t :

    x i s a v a r i a b l e . T h e a p p l i c a t i o n , - a b s t r a c t i o n a n d l e t - c o n s t r u c t a l l t a k e t h e i r s t a n -

    d a r d m e a n i n g s . L e t g : f b e n o t a t i o n f o r x : g ( f x ) . T h e x p o i n t c o n s t r u c t s u p p o r t s

    x p o i n t s w i t h r e s p e c t t o a t y p e s c h e m e i n s t e a d o f a t y p e , i . e . p o l y m o r p h i c r e c u r s i o n .

  • 8/14/2019 Constructor Calculus

    12/20

    W e s h a l l o f t e n u s e e x p l i c i t r e c u r s i o n t o r e p r e s e n t x p o i n t s . F o r e x a m p l e , a d e c l a r a -

    t i o n o f t h e f o r m f x = t w h e r e f i s f r e e i n t s t a n d s f o r x ( f : x : t ) . A t e r m o f t h e

    f o r m c t

    0

    : : : t

    n 1

    w h e r e c i s a c o n s t r u c t o r t a k i n g n a r g u m e n t s i s c o n s t r u c t e d b y c .

    T h e l a m b d a - a b s t r a c t i o n s , e x t e n s i o n s a n d p a r t i a l l y a p p l i e d c o n s t a n t s a r e c o l l e c t i v e l y

    k n o w n a s e x p l i c i t f u n c t i o n s .

    A t e r m c o n t e x t i s a n i t e s e q u e n c e o f t e r m v a r i a b l e s w i t h a s s i g n e d t y p e

    s c h e m e s . A c o n t e x t A ; ; c o n s i s t s o f a f u n c t o r c o n t e x t A ; a n d a t e r m c o n t e x t

    w h o s e t y p e s c h e m e s a r e a l l w e l l - f o r m e d w i t h r e s p e c t t o A ; . T h e s e t o f f r e e f u n c t o r

    ( r e s p e c t i v e l y , a r i t y ) v a r i a b l e s o f i s g i v e n b y t h e u n i o n o f t h e s e t s o f f r e e f u n c t o r

    ( r e s p e c t i v e l y a r i t y ) v a r i a b l e s i n t h e t y p e s c h e m e s a s s i g n e d t o t h e t e r m v a r i a b l e s i n

    .

    T h e c l o s u r e c l o s u r e ( ; T ) o f a t y p e T w i t h r e s p e c t t o a t e r m c o n t e x t i s g i v e n

    b y q u a n t i f y i n g T w i t h r e s p e c t t o t h o s e o f i t s f r e e a r i t y a n d f u n c t o r v a r i a b l e s w h i c h

    a r e n o t f r e e i n ( t h e o r d e r o f v a r i a b l e s w i l l n o t p r o v e t o b e s i g n i c a n t ) .

    W e h a v e t h e f o l l o w i n g j u d g e m e n t f o r m s c o n c e r n i n g t e r m c o n t e x t s a n d t e r m s .

    ; a s s e r t s t h a t ; i s a w e l l - f o r m e d c o n t e x t . ; t : T a s s e r t s t h a t t i s a

    t e r m o f t y p e T i n t h e c o n t e x t ; . T h e t y p e d e r i v a t i o n r u l e s f o r t e r m s a r e g i v e n

    i n F i g u r e 4 . L e t u s c o n s i d e r t h e m n o w i n t u r n .

    T e r m C o n t e x t s ( )

    ;

    ; S

    ; ; x : S

    x 62 d o m ( )

    T e r m s ( t )

    ;

    ; x : T

    ( x ) = 8

    0

    T

    :

    0

    !

    c : 8

    c

    T

    ; c : T

    :

    c

    !

    ; t : T

    1

    ! T

    2

    ; t

    1

    : T

    1

    ; t t

    1

    : T

    2

    ; ; x : T

    1

    t : T

    2

    ; x : t : T

    1

    ! T

    2

    ; ;

    1

    ; t

    1

    : T

    1

    ; ; x : 8

    1

    T

    1

    t

    2

    : T

    2

    ; l e t x = t

    1

    i n t

    2

    : T

    2

    ; ;

    1

    ; ; x : 8

    1

    T t : T

    ; x ( x : t ) : T

    :

    1

    !

    c : 8

    c

    T

    0

    ! ! T

    n

    ; t

    2

    : T ! T

    0

    = U ( T

    n

    ; T ) :

    c

    !

    0

    0

    ; t

    1

    : ( T

    0

    ! : : : T

    n 1

    ! T

    0

    )

    ; u n d e r c a p p l y t

    1

    e l s e t

    2

    : T ! T

    0

    F i g . 4 . T e r m s o f t h e c o n s t r u c t o r c a l c u l u s

    I f x i s a t e r m v a r i a b l e i n t h e n i t c a n b e t r e a t e d a s a t e r m t y p e d b y a n y

    i n s t a n t i a t i o n o f i t s t y p e s c h e m e , a s g i v e n b y a s u b s t i t u t i o n f r o m i t s b o u n d v a r i a b l e s

    t o t h e f u n c t o r c o n t e x t . S i m i l a r l y , a n y c o n s t r u c t o r c c a n b e t r e a t e d a s a t e r m . T h e

    r u l e s f o r a p p l i c a t i o n , l a m b d a - a b s t r a c t i o n a n d l e t - c o n s t r u c t i o n a r e s t a n d a r d .

    T h e m a i n p r e m i s e f o r p o l y m o r p h i c r e c u r s i o n e q u i p s t h e r e c u r s i o n v a r i a b l e x w i t h

    a t y p e s c h e m e w h o s e i n s t a n t i a t i o n w i l l p r o v i d e t h e t y p e o f t h e r e s u l t i n g t e r m . T h i s

    m e a n s t h a t x m a y t a k e o n m a n y d i e r e n t i n s t a n t i a t i o n s o f t h i s s c h e m e i n t y p i n g t h e

    r e c u r s i o n b o d y , e . g . e q u a l m a y a c t o n m a n y d i e r e n t k i n d s o f s t r u c t u r e s . O f c o u r s e ,

  • 8/14/2019 Constructor Calculus

    13/20

    t h i s w i l l l i m i t t h e p o w e r o f t y p e i n f e r e n c e , b e c a u s e o f t h e w i d e r a n g e o f p o s s i b l e

    t y p e s c h e m e s t h a t c a n p r o d u c e a g i v e n t y p e .

    T h e d e f a u l t b e h a v i o u r o f a t e r m u n d e r c a p p l y t

    1

    e l s e t

    2

    i s t h a t o f t

    2

    . H e n c e

    a n y t y p e f o r t h e w h o l e e x t e n s i o n m u s t b e a t y p e T ! T

    0

    f o r t

    2

    . I n a s t a n d a r d

    c a s e a n a l y s i s o r c o n d i t i o n a l , t

    1

    w o u l d b e r e q u i r e d t o h a v e t h e s a m e t y p e a s t

    2

    b u t

    h e r e d i e r e n t c a s e s m a y h a v e d i e r e n t t y p e s , d e p e n d i n g o n w h e t h e r t h e a r g u m e n t

    i s a p a i r , a n i n c l u s i o n ( o f c o p r o d u c t t y p e ) , a l i s t , e t c . T h a t i s , e a c h c a s e m u s t b e

    t y p e d i n a c o n t e x t t h a t i n c l u d e s l o c a l t y p e i n f o r m a t i o n t h a t i s n o t r e l e v a n t t o t h e

    o v e r a l l t y p e . M o r e p r e c i s e l y , i f t h e e x t e n s i o n i s a p p l i e d t o a t e r m c o n s t r u c t e d b y

    c t h e n i t s t y p e w i l l b e a n i n s t a n t i a t i o n o f b o t h t h e r e s u l t t y p e T

    n

    o f c a n d t h e

    a r g u m e n t t y p e T o f t

    2

    . I n o t h e r w o r d s , i t i s a n i n s t a n t i a t i o n o f t h e m o s t g e n e r a l

    u n i e r o f T

    n

    a n d T . T h u s w h e n t h e s p e c i a l i s a t i o n i s i n v o k e d t h e e x t e n s i o n n e e d

    o n l y h a v e t y p e ( T ! T

    0

    ) a n d s o t

    1

    ( w h i c h a c t s o n t h e a r g u m e n t s o f c ) m u s t h a v e

    t y p e ( T

    0

    ! : : : ! T

    n 1

    ! T

    0

    ) .

    I t i s u n u s u a l f o r u n i e r s t o a p p e a r i n t y p e d e r i v a t i o n r u l e s , a s o p p o s e d t o t y p e

    i n f e r e n c e . F u r t h e r , t h e s u b s t i t u t i o n i n t h e p r e m i s e s d o e s n o t a p p e a r i n t h e c o n c l u s i o n

    a n d s o t y p e i n f e r e n c e w i l l h a v e t o b a c k t r a c k t o r e m o v e i t s e e c t s f r o m t h e n a l r e s u l t

    ( s e e S e c t i o n 8 ) .

    F r e e a n d b o u n d t e r m v a r i a b l e s a r e d e n e d i n t h e u s u a l w a y . A t e r m s u b s t i t u t i o n

    i s a p a r t i a l f u n c t i o n f r o m t e r m v a r i a b l e s t o t e r m s . I f i s a f u n c t o r c o n t e x t a n d

    a n d

    0

    a r e t e r m c o n t e x t s t h e n : ; ! ;

    0

    i f ; a n d ;

    0

    a r e w e l l -

    f o r m e d a n d f o r e a c h t e r m v a r i a b l e x i n w e h a v e ;

    0

    x : ( x ) . A t e r m i s a n

    e q u i v a l e n c e c l a s s o f r a w t e r m s u n d e r s u b s t i t u t i o n f o r b o u n d v a r i a b l e s .

    L e m m a 2 . I f ; J h a s a d e r i v a t i o n a n d : ; ! ;

    0

    i s a t e r m s u b s t i t u -

    t i o n t h e n ;

    0

    J a l s o h a s a d e r i v a t i o n .

    P r o o f . B y i n d u c t i o n o n t h e s t r u c t u r e o f t h e d e r i v a t i o n o f J .

    5 E v a l u a t i o n

    T h e b a s i c r e d u c t i o n r u l e s a r e r e p r e s e n t e d b y t h e r e l a t i o n > i n F i g u r e 5 . A r e d u c t i o n

    t ! t

    0

    i s g i v e n b y t h e a p p l i c a t i o n o f a b a s i c r e d u c t i o n t o a s u b - t e r m . A l l o f t h e

    r e d u c t i o n r u l e s a r e s t a n d a r d e x c e p t t h o s e f o r e x t e n s i o n s . R e d u c t i o n o f e x t e n s i o n s

    a m o u n t s t o d e c i d i n g w h e t h e r t o s p e c i a l i s e o r n o t . A t e r m t c a n n o t b e c o n s t r u c t e d

    b y a c o n s t r u c t o r c i f i t i s a n e x p l i c i t f u n c t i o n , o r i s c o n s t r u c t e d b y s o m e c o n s t r u c t o r

    o t h e r t h a n c .

    ( x : t

    2

    ) t

    1

    > t

    2

    f t

    1

    = x g

    l e t x = t

    1

    i n t

    2

    > t

    2

    f t

    1

    = x g

    x ( x : t ) > ( x : t ) x ( x : t )

    u n d e r c a p p l y f e l s e g t o c t

    1

    : : : t

    n

    > f t

    1

    : : : t

    n

    u n d e r c a p p l y f e l s e g t o t > g t i f t c a n n o t b e c o n s t r u c t e d b y c

    F i g . 5 . E v a l u a t i o n r u l e s

    T h e o r e m 3 ( s u b j e c t r e d u c t i o n ) . R e d u c t i o n p r e s e r v e s t y p i n g .

    P r o o f . T h e o n l y n o v e l c a s e s a r e i n s p e c i a l i s a t i o n . C o n s i d e r a r e d u c t i o n

    u n d e r c a p p l y f e l s e g t o c t

    0

    : : : t

    n 1

    > f t

    0

    : : : t

    n 1

  • 8/14/2019 Constructor Calculus

    14/20

    a n d a t y p e d e r i v a t i o n f o r t h e l e f t - h a n d s i d e . L e t c h a v e t y p e s c h e m e 8

    c

    : T

    0

    ! : : : !

    T

    n

    a n d g h a v e d e r i v e d t y p e T ! T

    0

    . I t f o l l o w s t h a t t h e a r g u m e n t c t

    0

    : : : t

    n 1

    m u s t

    h a v e t y p e T a n d t h a t T m u s t b e ( T

    n

    ) f o r s o m e s u b s t i t u t i o n o n

    c

    . H e n c e

    f a c t o r s t h r o u g h t h e m o s t g e n e r a l u n i e r o f T

    n

    a n d T b y s o m e s u b s t i t u t i o n . H e n c e

    f : ( T

    0

    ! : : : T

    n 1

    ! T

    0

    ) b y L e m m a 2 a p p l i e d t o . N o w t h e r i g h t - h a n d s i d e o f

    t h e r e d u c t i o n h a s t y p e T

    0

    w h i c h i s T

    0

    a s o n l y a c t s o n

    c

    .

    T h e o r e m 4 . R e d u c t i o n i s C h u r c h - R o s s e r .

    P r o o f . T h e r u l e s f o r s p e c i a l i s a t i o n c a n b e v i e w e d a s a n i t e f a m i l y o f r u l e s , o n e f o r

    e a c h c o n s t r u c t o r c . T h e n a l l t h e r e d u c t i o n r u l e s a r e l e f t - l i n e a r a n d n o n - o v e r l a p p i n g ,

    s o w e c a n a p p l y K l o p ' s g e n e r a l r e s u l t K l o 8 0 ] .

    6 E x c e p t i o n s

    A n y a c c o u n t o f d a t a t y p e s m u s t a d d r e s s t h e i s s u e o f m i s s i n g d a t a . F o r e x a m p l e ,

    t a k i n g t h e h e a d o f a n e m p t y l i s t . I n i m p e r a t i v e l a n g u a g e s t h i s o f t e n r e s u l t s i n a

    v o i d p o i n t e r . I n p o i n t e r - f r e e l a n g u a g e s l i k e M L o r J a v a s u c h p r o b l e m s a r e a d d r e s s e d

    b y i n t r o d u c i n g e x c e p t i o n s . T h e s e a g p r o b l e m s d u r i n g e v a l u a t i o n a n d m a y c h a n g e

    t h e o w o f c o n t r o l i n w a y s t h a t a r e d i c u l t t o s p e c i f y a n d u n d e r s t a n d . E x c e p t i o n s

    m a y b e c a u g h t a n d h a n d l e d u s i n g a n y a r g u m e n t s t o t h e e x c e p t i o n a s p a r a m e t e r s .

    E x c e p t i o n s a r i s e h e r e w h e n a n e x t e n s i o n i s a p p l i e d t o a n a r g u m e n t o f t h e w r o n g

    f o r m , e i t h e r c o n s t r u c t e d b y t h e w r o n g c o n s t r u c t o r o r a n e x p l i c i t f u n c t i o n . T h e

    s o l u t i o n i s t o a d d o n e m o r e c o n s t r u c t o r

    e x n : 8 X ; Y : X ! Y

    w h i c h r e p r e s e n t s a n e x c e p t i o n t h a t c a r r i e s a n a r g u m e n t . A s e x n i s a c o n s t r u c t o r i t

    c a n b e h a n d l e d u s i n g t h e e x t e n s i o n m e c h a n i s m w i t h o u t a d d i t i o n a l m a c h i n e r y . T h e

    o n l y i s s u e i s t h a t t h e e x c e p t i o n m a y p r o d u c e a f u n c t i o n , r a t h e r t h a n d a t a . T h i s

    w o u l d b e b a d p r o g r a m m i n g s t y l e b u t c a n b e h a n d l e d b y i n t r o d u c i n g o n e a d d i t i o n a l

    e v a l u a t i o n r u l e

    e x n s t > e x n s

    R e w r i t i n g i s s t i l l c o n u e n t b e c a u s e t h e l e f t - h a n d s i d e i s n o t a t e r m c o n s t r u c t e d b y

    e x n a s i t i s a p p l i e d t o t w o a r g u m e n t s , n o t o n e .

    7 E x a m p l e s

    L e t u s b e g i n w i t h a g e n e r i c e q u a l i t y r e l a t i o n . W e c a n u s e C ( P ; P ) t o r e p r e s e n t a

    t y p e b o o l o f b o o l e a n s w i t h t r u e = i n l i n t r U a n d f a l s e = i n r i n t r U a n d l e t & & b e

    a n i n x f o r m o f c o n j u n c t i o n , d e n e d b y n e s t e d e x t e n s i o n s . I n t h e g e n e r i c t e s t f o r

    e q u a l i t y i t i s n o t n e c e s s a r y t h a t t h e a r g u m e n t s h a v e t h e s a m e t y p e , t h o u g h t h i s w i l l

    b e t h e c a s e i f t h e y a r e i n d e e d e q u a l . S o t h e t y p e f o r e q u a l i t y i s X ! Y ! b o o l .

    T h e p r o g r a m i s g i v e n i n F i g u r e 6 . E a c h p a t t e r n i n t h e p r o g r a m c o r r e s p o n d s t o o n e

    e x t e n s i o n . F o r e x a m p l e ,

    j i n t r E x ! u n d e r i n t r E a p p l y e q u a l x e l s e y : f a l s e

    r e p r e s e n t s u n d e r i n t r E a p p l y x : u n d e r i n t r E a p p l y e q u a l x e l s e y : f a l s e e l s e w h i l e t h e

    n a l p a t t e r n o f t h e f o r m j ! t r e p r e s e n t s t h e d e f a u l t f u n c t i o n x : t . O b v i o u s l y ,

    t h e a l g o r i t h m i s q u i t e i n d e p e n d e n t o f t h e n a t u r e o f t h e i n d i v i d u a l c o n s t r u c t o r s , o n e

    o f t h e r e a s o n s t h a t e q u a l i t y c a n s o m e t i m e s b e t r e a t e d b y a d h o c m e t h o d s .

  • 8/14/2019 Constructor Calculus

    15/20

    ( e q u a l : X ! Y ! b o o l ) z =

    m a t c h z w i t h

    i n t r U ! u n d e r i n t r U a p p l y t r u e e l s e y f a l s e

    j i n t r E x ! u n d e r i n t r E a p p l y e q u a l x e l s e y f a l s e

    j i n t r F x

    0

    x

    1

    ! u n d e r i n t r F a p p l y y

    0

    ; y

    1

    ( e q u a l x

    0

    y

    0

    ) & & ( e q u a l x

    1

    y

    1

    ) e l s e

    y f a l s e

    j i n t r C x ! u n d e r i n t r C a p p l y e q u a l x e l s e y f a l s e

    j i n t r A x ! u n d e r i n t r A a p p l y e q u a l x e l s e y f a l s e

    j i n t r B x ! u n d e r i n t r B a p p l y e q u a l x e l s e y f a l s e

    j i n t r K x ! u n d e r i n t r K a p p l y e q u a l x e l s e y f a l s e

    j i n t r L x ! u n d e r i n t r L a p p l y e q u a l x e l s e y f a l s e

    j i n t r R x ! u n d e r i n t r R a p p l y e q u a l x e l s e y f a l s e

    j i n t r G x ! u n d e r i n t r G a p p l y e q u a l x e l s e y f a l s e

    j i n t r H x ! u n d e r i n t r H a p p l y e q u a l x e l s e y f a l s e

    j i n t r I x ! u n d e r i n t r I a p p l y e q u a l x e l s e y f a l s e

    j ! x ; y : f a l s e

    F i g . 6 . D e n i n g e q u a l i t y b y e x t e n s i o n

    B e f o r e t a c k l i n g m o r e c o m p l e x e x a m p l e s l i k e m a p p i n g , w e s h a l l r e q u i r e a l i t t l e

    m o r e i n f r a s t r u c t u r e . I n p a r t i c u l a r , w e s h a l l r e q u i r e e l i m i n a t o r s c o r r e s p o n d i n g t o t h e

    c o n s t r u c t o r s . H a p p i l y , t h e s e c a n b e d e n e d b y e x t e n s i o n s . F o r e x a m p l e ,

    e l i m E = u n d e r i n t r E a p p l y x : x e l s e e x n i n t r E : P X ! X

    i s t h e e l i m i n a t o r c o r r e s p o n d i n g t o i n t r E . I f a p p l i e d t o s o m e i n t r E t t h e n i t r e t u r n s t .

    O t h e r w i s e a n e x c e p t i o n r e s u l t s .

    I n g e n e r a l e a c h c o n s t r u c t o r h a s e l i m i n a t o r s c o r r e s p o n d i n g t o t h e n u m b e r o f i t s

    a r g u m e n t s . i n t r U h a s n o e l i m i n a t o r . T h o s e f o r i n t r F a r e g i v e n b y

    e l i m F 0 = u n d e r i n t r F a p p l y x ; y : x e l s e e x n ( i n t r F ; 0 ) : P ( X ; Y ) ! P X

    e l i m F 1 = u n d e r i n t r F a p p l y x ; y : y e l s e e x n ( i n t r F ; 1 ) : P ( X ; Y ) ! P Y

    W e c a n d e n e t h e u s u a l p r o j e c t i o n s f o r p a i r s b y f s t = e l i m E : e l i m F 0 a n d s n d =

    e l i m E : e l i m F 1 . I f i n t r Z : T ! T

    0

    i s a n y o t h e r c o n s t r u c t o r t h e n i t s e l i m i n a t o r i s

    e l i m Z = u n d e r i n t r Z a p p l y x : x e l s e e x n i n t r Z : T

    0

    ! T :

    T h e a l g o r i t h m f o r m a p p i n g i s f a i r l y c o m p l e x . R e c a l l t h a t t h e t y p e f o r m a p p i n g

    i s

    m a p : 8 m : 8 F : : m ! 1 ; X : : m ; Y : : m : P ( X ! Y ) ! F X ! F Y

    I f m i s 1 a n d f : X ! Y i s a n o r d i n a r y f u n c t i o n t h e n i n t r E f : P ( X ! Y ) i s t h e

    c o r r e s p o n d i n g o n e - t u p l e a n d m a p ( i n t r E f ) h a s t y p e F X ! F Y . W h e n a p p l i e d t o

    i n t r E x t h e n s e m a n t i c a l l y t h e e x p e c t e d r e s u l t i s

    m a p ( i n t r E f ) ( i n t r E x ) = i n t r E ( f x )

    a s x i s o f t h e t y p e t o w h i c h f i s t o b e a p p l i e d , a n d t h e n i n t r E i s a p p l i e d t o c r e a t e a

    o n e - t u p l e , h a v i n g t h e s a m e s t r u c t u r e a s t h e o r i g i n a l a r g u m e n t .

    I f m i s ( m

    0

    ; m

    1

    ) t h e n w e n e e d a p a i r o f f u n c t i o n s f

    i

    : P X

    i

    ! P Y

    i

    f o r i = 0 ; 1 .

    W h e n a p p l i e d t o a t e r m o f t h e f o r m i n t r F x

    0

    x

    1

    t h e n x

    i

    : P X

    i

    a n d w e g e t

    m a p ( i n t r F f

    0

    f

    1

    ) ( i n t r F x

    0

    x

    1

    ) = i n t r F ( m a p f

    0

    x

    0

    ) ( m a p f

    1

    x

    1

    ) :

    N o t e t h a t i t i s n e c e s s a r y t o m a p f

    0

    a n d f

    1

    a c r o s s x

    0

    a n d x

    1

    . P u t t i n g t h e s e t w o r u l e s

    t o g e t h e r f o r p a i r s y i e l d s

    m a p ( f

    0

    ; f

    1

    ) ( x

    0

    ; x

    1

    ) = ( f

    0

    x

    0

    ; f

    1

    x

    1

    ) :

  • 8/14/2019 Constructor Calculus

    16/20

    T h e p r o g r a m i n F i g u r e 7 r e p r e s e n t s s u c h s e m a n t i c e q u a t i o n s w i t h i n e x t e n s i o n s ,

    b u t r e p l a c e s t h e e x p l i c i t s t r u c t u r e s g i v e n t o t h e f u n c t i o n s b y t h e a p p r o p r i a t e e l i m -

    i n a t o r s f o r t u p l e s . N o t e h o w e x c e p t i o n s c a r r y b o t h t h e m a p p i n g f u n c t i o n a n d t h e

    a r g u m e n t a s a p a i r . I n p a r t i c u l a r , i f z h a s e v a l u a t e d t o a n e x c e p t i o n t h e n t h a t i s

    n e s t e d w i t h i n t h e e x c e p t i o n g e n e r a t e d b y t h e m a p p i n g . T h i s g i v e s d e t a i l e d a c c o u n t

    o f w h e r e t h e e r r o r h a s o c c u r r e d w h i c h c a n b e h a n d l e d i n s o p h i s t i c a t e d w a y s . W e

    c a n c u s t o m i s e m a p f o r a n y p a r t i c u l a r a r i t y a s i n

    m a p 1 f = m a p ( i n t r E f ) : ( X ! Y ) ! F X ! F Y

    m a p 2 f g = m a p ( f ; g ) : ( X

    0

    ! Y

    0

    ) ! ( X

    1

    ! Y

    1

    ) ! F ( X

    0

    ; X

    1

    ) ! F ( Y

    0

    ; Y

    1

    ) :

    ( m a p : P ( X ! Y ) ! F X ! F Y ) f z =

    m a t c h z w i t h

    i n t r E x ! i n t r E ( e l i m E f x )

    j i n t r F x y ! i n t r F ( m a p ( e l i m F 0 f ) x ) ( m a p ( e l i m F 1 f ) y )

    j i n t r C x ! i n t r C ( e l i m E f x )

    j i n t r A x ! i n t r A ( e l i m F 0 f x )

    j i n t r B y ! i n t r B ( e l i m F 1 f y )

    j i n t r K x ! i n t r K x

    j i n t r L x ! i n t r L ( m a p ( e l i m F 0 f ) x )

    j i n t r R y ! i n t r R ( m a p ( e l i m F 1 f ) y )

    j i n t r G x ! i n t r G ( m a p ( i n t r E ( m a p f ) ) x )

    j i n t r H x ! i n t r H ( m a p ( m a p f ; m a p f ) x )

    j i n t r I x ! i n t r I ( m a p ( f ; m a p f ) x )

    j ! e x n ( m a p f ; z )

    F i g . 7 . D e n i t i o n o f m a p

    U s i n g m a p w e c a n d e n e t h e o p e r a t i o n

    i n d u c t : 8 F : : 2 ! 1 ; X : : 1 ; Y : : 1 : ( F ( X ; Y ) ! Y ) ! ( F ) X ! Y

    a s s o c i a t e d w i t h i n i t i a l a l g e b r a s f o r f u n c t o r s o f k i n d 2 ! 1 b y

    i n d u c t f = f : ( m a p 2 ( x : x ) ( i n d u c t f ) ) : e l i m I :

    T h i s d e n i t i o n c a n b e a d a p t e d t o f u n c t o r s F : : ( n ; 1 ) ! 1 f o r a n y x e d n b y

    r e p l a c i n g m a p 2 ( x : x ) b y m a p

    n

    a p p l i e d t o n 1 c o p i e s o f t h e i d e n t i t y f u n c t i o n .

    T h e m o s t f a m i l i a r e x a m p l e o f f o l d l e f t t a k e s a f u n c t i o n f : X ! Y ! X a n x : X

    a n d a l i s t y

    0

    ; y

    1

    ; : : : ; y

    n

    ] a n d p r o d u c e s f ( : : : ( f x y

    0

    ) : : : ) y

    n

    : I n g e n e r a l w e m u s t

    c o n s i d e r a f u n c t o r w h i c h t a k e s m o r e t h a n o n e a r g u m e n t . F o r e x a m p l e , t o f o l d o v e r

    F ( Y

    0

    ; Y

    1

    ) w h e r e Y

    0

    a n d Y

    1

    a r e t y p e s w e n e e d t w o f u n c t i o n s F

    i

    : X ! Y

    i

    ! X .

    T h e s e c a n b e c o m b i n e d b y c a s e a n a l y s i s t o g i v e a f u n c t i o n X ! Y

    0

    + Y

    1

    ! X . I n

    g e n e r a l , w e c a n l e t Y : : n b e a t u p l e o f t y p e s a n d u s e a f u n c t i o n X ! C Y ! X .

    H e n c e t h e t y p e o f f o l d l e f t i s a s d e n e d i n F i g u r e 8 . W h e n t h e d a t a s t r u c t u r e h o l d s

    o n l y o n e k i n d o f d a t a t h e n w e c a n e m p l o y

    f o l d l e f t 1 : ( X ! Y ! X ) ! X ! F Y ! X

    d e n e d b y f o l d l e f t 1 f = f o l d l e f t ( u ; v : f u ( e l i m C v ) ) .

    S i m i l a r f u n c t i o n s c a n b e d e n e d f o r t h e u s u a l s e c o n d - o r d e r c o m b i n a t o r s s u c h a s

    r i g h t f o l d i n g a n d z i p p i n g o f t y p e s :

    f o l d r i g h t : 8 n : 8 F : : n ! 1 ; X : : n ; Y : : 1 : ( C X ! Y ! Y ) ! F X ! Y ! Y

    z i p w i t h : 8 n : 8 F : : n ! 1 ; X : : n ; Y : : n ; Z : : n :

    P ( X ! Y ! Z ) ! F X ! F Y ! F Z

  • 8/14/2019 Constructor Calculus

    17/20

    ( f o l d l e f t : ( X ! C ( Y : : n ) ! X ) ! X ! F Y ! X ) x f y =

    m a t c h y w i t h

    j i n t r E y

    0

    ! f x ( i n t r C y

    0

    )

    j i n t r F y

    0

    y

    1

    ! f o l d l e f t ( u ; v : f u ( i n t r B v ) ) ( f o l d l e f t ( u ; v : f u ( i n t r A v ) ) x y

    0

    ) y

    1

    j i n t r C y

    0

    ! f x ( i n t r C y

    0

    )

    j i n t r A y

    0

    ! f x ( i n t r A y

    0

    )

    j i n t r B y

    1

    ! f x ( i n t r B y

    1

    )

    j i n t r K y

    0

    ! x

    j i n t r L y

    0

    ! f o l d l e f t ( u ; v : f u ( i n t r A v ) ) x y

    0

    j i n t r R y

    1

    ! f o l d l e f t ( u ; v : f u ( i n t r B v ) ) x y

    1

    j i n t r G y

    0

    ! f o l d l e f t ( u ; v : f o l d l e f t f u ( e l i m C v ) ) x y

    0

    j i n t r H y

    0

    ! f o l d l e f t ( u c a s e ( ( f o l d l e f t f u ) e l i m C ) ( ( f o l d l e f t f u ) e l i m C ) x y

    0

    j i n t r I y

    0

    ! f o l d l e f t ( u c a s e ( f u ) ( ( f o l d l e f t f u ) e l i m C ) x y

    0

    j ! e x n ( f o l d l e f t f ; y )

    F i g . 8 . D e n i t i o n o f f o l d l e f t

    8 T y p e i n f e r e n c e

    T h e u s e o f p o l y m o r p h i c r e c u r s i o n a n d e x t e n s i o n m e a n t h a t n o t e v e r y t e r m h a s a

    p r i n c i p a l t y p e . T h e i s s u e s f o r p o l y m o r p h i c r e c u r s i o n a r e a l r e a d y w e l l e x p l o r e d , e . g .

    H e n 9 3 ] . W h e n i n f e r r i n g a t y p e f o r x ( x : t ) t h e r e a r e m a n y c h o i c e s o f t y p e s c h e m e

    w h i c h c o u l d p r o d u c e t h e n e c e s s a r y t y p e . A s i m i l a r p r o b l e m a r i s e s w i t h e x t e n s i o n s .

    N e v e r t h e l e s s , t h e c o n s t r u c t o r c a l c u l u s s u p p o r t s a p o w e r f u l t y p e i n f e r e n c e m e c h -

    a n i s m . F o r e x a m p l e , i t i s a b l e t o t y p e a l l o f t h e g e n e r i c f u n c t i o n s i n S e c t i o n 7 . I t

    s u c e s t o s p e c i f y t h e o v e r a l l t y p e o f a g e n e r i c f u n c t i o n o r p o l y m o r p h i c r e c u r s i o n

    w h e n i t i s d e n e d , b u t n o t w h e n i t i s u s e d . G i v e n t h e c o m p l e x i t y o f g e n e r i c f u n c t i o n s ,

    i t i s a g o o d i d e a t o s u p p l y e x p l i c i t t y p e s a t t h e p o i n t o f d e n i t i o n .

    T y p e i n f e r e n c e f o r a n e x t e n s i o n u n d e r c a p p l y t

    1

    e l s e t

    2

    i s c o m p l i c a t e d b y s e v e r a l

    f a c t o r s . I n f e r r i n g a t y p e f o r t

    2

    p r o d u c e s a s u b s t i t u t i o n

    2

    . U n i c a t i o n o f t h e r e s u l t

    t y p e f o r c a n d t h e a r g u m e n t t y p e f o r t

    2

    p r o d u c e s a s u b s t i t u t i o n . T h e n i n f e r r i n g

    a t y p e f o r t

    1

    ( i n t h e c o n t e x t d e t e r m i n e d b y

    2

    ) p r o d u c e s a t h i r d s u b s t i t u t i o n

    1

    .

    T h e n a l r e s u l t s h o u l d b e

    1

    2

    w i t h o u t i n c l u d i n g b u t t h i s w i l l o n l y m a k e s e n s e

    i f

    1

    d o e s n o t a c t o n a n y v a r i a b l e s i n t r o d u c e d b y . T h e s o l u t i o n i s t o t r e a t s u c h

    v a r i a b l e s a s a d d i t i o n a l c o n s t a n t f u n c t o r s d u r i n g t h e t y p e i n f e r e n c e f o r t

    1

    s o t h a t

    1

    d o e s n o t a c t o n t h e m .

    T h e t y p e i n f e r e n c e a l g o r i t h m W t a k e s a c o n t e x t ; a n d a t e r m t a n d a t y p e

    T w h o s e f r e e v a r i a b l e s a r e i n t h e c o n t e x t ( t h e t y p e m a y b e i n i t i a l i s e d t o b e a f r e s h

    v a r i a b l e ) . I f s u c c e s s f u l i t r e t u r n s a f u n c t o r s u b s t i t u t i o n : !

    0

    s u c h t h a t

    0

    ; t : T . T h e c a s e o f e x t e n s i o n s i s h a n d l e d h e r e . D e t a i l s o f t h e a l g o r i t h m

    m a y b e f o u n d i n t h e t e c h n i c a l r e p o r t J a y 0 0 ] .

    L e t t b e u n d e r c a p p l y t

    1

    e l s e t

    2

    . L e t 8

    c

    : T

    0

    ! : : : ! T

    n

    b e t h e g i v e n t y p e

    s c h e m e f o r c . L e t

    2

    : !

    2

    b e W ( ; ; t

    2

    ; T ) . I f

    2

    T i s n o t a f u n c t i o n t y p e t h e n

    t h e a l g o r i t h m f a i l s , s o a s s u m e t h a t i t i s s o m e T

    0

    ! T

    0 0

    . L e t :

    2

    ;

    c

    !

    3

    b e

    U ( T

    n

    ; T

    0

    ) . N o w t r e a t t h e t y p e a n d a r i t y v a r i a b l e s i n t r o d u c e d b y ( i . e . a p p e a r i n g i n

    ( T

    0

    ) b u t n o t i n T

    0

    i t s e l f ) a s i f t h e y a r e c o n s t a n t s t h a t