Constructor Calculus
-
Upload
brett-morgan-8199 -
Category
Documents
-
view
232 -
download
0
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