ad hoc polymorphism
TRANSCRIPT
-
8/12/2019 Ad Hoc Polymorphism
1/17
-
8/12/2019 Ad Hoc Polymorphism
2/17
T h i s w o r k g r e w o u t o f t h e e o r t s o f t h e H a s k e l l
c o m m i t t e e t o d e s i g n a l a z y f u n c t i o n a l p r o g r a m m i n g
l a n g u a g e
2
. O n e o f t h e g o a l s o f t h e H a s k e l l c o m m i t -
t e e w a s t o a d o p t \ o t h e s h e l f " s o l u t i o n s t o p r o b l e m s
w h e r e v e r p o s s i b l e . W e w e r e a l i t t l e s u r p r i s e d t o r e -
a l i s e t h a t a r i t h m e t i c a n d e q u a l i t y w e r e a r e a s w h e r e
n o s t a n d a r d s o l u t i o n w a s a v a i l a b l e ! T y p e c l a s s e s
w e r e d e v e l o p e d a s a n a t t e m p t t o n d a b e t t e r s o -
l u t i o n t o t h e s e p r o b l e m s ; t h e s o l u t i o n w a s j u d g e d
s u c c e s s f u l e n o u g h t o b e i n c l u d e d i n t h e H a s k e l l d e -
s i g n . H o w e v e r , t y p e c l a s s e s s h o u l d b e j u d g e d i n d e -
p e n d e n t l y o f H a s k e l l ; t h e y c o u l d j u s t a s w e l l b e i n -
c o r p o r a t e d i n t o a n o t h e r l a n g u a g e , s u c h a s S t a n d a r d
M L
T y p e c l a s s e s a p p e a r t o b e c l o s e l y r e l a t e d t o i s s u e s
t h a t a r i s e i n o b j e c t - o r i e n t e d p r o g r a m m i n g , b o u n d e d
q u a n t i c a t i o n o f t y p e s , a n d a b s t r a c t d a t a t y p e s
C W 8 5 , M P 8 5 , R e y 8 5 ] . S o m e o f t h e c o n n e c t i o n s a r e
o u t l i n e d b e l o w , b u t m o r e w o r k i s r e q u i r e d t o u n d e r -
s t a n d t h e s e r e l a t i o n s f u l l y .
A t y p e s y s t e m v e r y s i m i l a r t o o u r s h a s b e e n d i s -
c o v e r e d i n d e p e n d e n t l y b y S t e f a n K a e s K a e 8 8 ] . O u r
w o r k i m p r o v e s o n K a e s ' i n s e v e r a l w a y s , n o t a b l y
b y t h e i n t r o d u c t i o n o f t y p e c l a s s e s t o g r o u p r e -
l a t e d o p e r a t o r s , a n d b y p r o v i d i n g a b e t t e r t r a n s l a -
t i o n m e t h o d .
T h i s p a p e r i s d i v i d e d i n t o t w o p a r t s : t h e b o d y
g i v e s a n i n f o r m a l i n t r o d u c t i o n t o t y p e c l a s s e s , w h i l e
t h e a p p e n d i x g i v e s a m o r e f o r m a l d e s c r i p t i o n . S e c -
t i o n 2 m o t i v a t e s t h e n e w s y s t e m b y d e s c r i b i n g l i m i -
t a t i o n s o f a d - h o c p o l y m o r p h i s m a s i t i s u s e d i n S t a n -
d a r d M L a n d M i r a n d a . S e c t i o n 3 i n t r o d u c e s t y p e
c l a s s e s b y m e a n s o f a s i m p l e e x a m p l e . S e c t i o n 4
i l l u s t r a t e s h o w t h e e x a m p l e o f S e c t i o n 3 m a y b e
t r a n s l a t e d i n t o a n e q u i v a l e n t p r o g r a m w i t h o u t t y p e
c l a s s e s . S e c t i o n 5 p r e s e n t s a s e c o n d e x a m p l e , t h e d e f -
i n i t i o n o f a n o v e r l o a d e d e q u a l i t y f u n c t i o n . S e c t i o n 6
d e s c r i b e s s u b c l a s s e s . S e c t i o n 7 d i s c u s s e s r e l a t e d w o r k
a n d c o n c l u d e s . A p p e n d i x A p r e s e n t s i n f e r e n c e r u l e s
f o r t y p i n g a n d t r a n s l a t i o n .
2 L i m i t a t i o n s o f a d - h o c
p o l y m o r p h i s m
T h i s s e c t i o n m o t i v a t e s o u r t r e a t m e n t o f a d - h o c p o l y -
m o r p h i s m , b y e x a m i n i n g p r o b l e m s t h a t a r i s e w i t h
2
T h e H a s k e l l c o m m i t t e e i n c l u d e s : A r v i n d , B r i a n B o u t e l ,
J o n F a i r b a i r n , J o e F a s e l , P a u l H u d a k , J o h n H u g h e s , T h o m a s
J o h n s s o n , D i c k K i e b u r t z , S i m o n P e y t o n J o n e s , R i s h i y u r
N i k h i l , M i k e R e e v e , P h i l i p W a d l e r , D a v i d W i s e , a n d J o n a t h a n
Y o u n g .
a r i t h m e t i c a n d e q u a l i t y i n S t a n d a r d M L a n d M i -
r a n d a .
A r i t h m e t i c . I n t h e s i m p l e s t a p p r o a c h t o o v e r l o a d -
i n g , b a s i c o p e r a t i o n s s u c h a s a d d i t i o n a n d m u l t i p l i c a -
t i o n a r e o v e r l o a d e d , b u t f u n c t i o n s d e n e d i n t e r m s o f
t h e m a r e n o t . F o r e x a m p l e , a l t h o u g h o n e c a n w r i t e
3 * 3 a n d 3 . 1 4 * 3 . 1 4 , o n e c a n n o t d e n e
s q u a r e x = x * x
a n d t h e n w r i t e t e r m s s u c h a s
s q u a r e 3
s q u a r e 3 . 1 4
T h i s i s t h e a p p r o a c h t a k e n i n S t a n d a r d M L . ( I n c i -
d e n t a l l y , i t i s i n t e r e s t i n g t o n o t e t h a t a l t h o u g h S t a n -
d a r d M L i n c l u d e s o v e r l o a d i n g o f a r i t h m e t i c o p e r a -
t o r s , i t s f o r m a l d e n i t i o n i s d e l i b e r a t e l y a m b i g u o u s
a b o u t h o w t h i s o v e r l o a d i n g i s r e s o l v e d H M T 8 8 , p a g e
7 1 ] , a n d d i e r e n t v e r s i o n s o f S t a n d a r d M L r e s o l v e
o v e r l o a d i n g i n d i e r e n t w a y s . )
A m o r e g e n e r a l a p p r o a c h i s t o a l l o w t h e a b o v e
e q u a t i o n t o s t a n d f o r t h e d e n i t i o n o f t w o o v e r -
l o a d e d v e r s i o n s o f s q u a r e , w i t h t y p e s I n t - > I n t
a n d F l o a t - > F l o a t . B u t c o n s i d e r t h e f u n c t i o n :
s q u a r e s ( x , y , z )
= ( s q u a r e x , s q u a r e y , s q u a r e z )
S i n c e e a c h o f x y , a n d z m i g h t , i n d e p e n d e n t l y , h a v e
e i t h e r t y p e I n t o r t y p e F l o a t , t h e r e a r e e i g h t p o s s i -
b l e o v e r l o a d e d v e r s i o n s o f t h i s f u n c t i o n . I n g e n e r a l ,
t h e r e m a y b e e x p o n e n t i a l g r o w t h i n t h e n u m b e r o f
t r a n s l a t i o n s , a n d t h i s i s o n e r e a s o n w h y s u c h s o l u -
t i o n s a r e n o t w i d e l y u s e d .
I n M i r a n d a , t h i s p r o b l e m i s s i d e - s t e p p e d b y n o t
o v e r l o a d i n g a r i t h m e t i c o p e r a t i o n s . M i r a n d a p r o v i d e s
o n l y t h e o a t i n g p o i n t t y p e ( n a m e d \ n u m " ) , a n d
t h e r e i s n o w a y t o u s e t h e t y p e s y s t e m t o i n d i c a t e
t h a t a n o p e r a t i o n i s r e s t r i c t e d t o i n t e g e r s .
E q u a l i t y . T h e h i s t o r y o f t h e e q u a l i t y o p e r a t i o n i s
c h e c k e r e d : i t h a s b e e n t r e a t e d a s o v e r l o a d e d , f u l l y
p o l y m o r p h i c , a n d p a r t l y p o l y m o r p h i c .
T h e r s t a p p r o a c h t o e q u a l i t y i s t o m a k e i t o v e r -
l o a d e d , j u s t l i k e m u l t i p l i c a t i o n . I n p a r t i c u l a r , e q u a l -
i t y m a y b e o v e r l o a d e d o n e v e r y m o n o t y p e t h a t a d -
m i t s e q u a l i t y , i . e . , d o e s n o t c o n t a i n a n a b s t r a c t t y p e
o r a f u n c t i o n t y p e . I n s u c h a l a n g u a g e , o n e m a y
w r i t e 3 * 4 = = 1 2 t o d e n o t e e q u a l i t y o v e r i n t e g e r s , o r
' a ' = = ' b ' t o d e n o t e e q u a l i t y o v e r c h a r a c t e r s . B u t
o n e c a n n o t d e n e a f u n c t i o n m e m b e r b y t h e e q u a t i o n s
m e m b e r ] y = F a l s e
m e m b e r ( x : x s ) y = ( x = = y ) \ / m e m b e r x s y
2
-
8/12/2019 Ad Hoc Polymorphism
3/17
a n d t h e n w r i t e t e r m s s u c h a s
m e m b e r 1 , 2 , 3 ] 2
m e m b e r " H a s k e l l " ' k '
( W e a b b r e v i a t e a l i s t o f c h a r a c t e r s ' a ' , ' b ' , ' c ' ]
a s " a b c " . ) T h i s i s t h e a p p r o a c h t a k e n i n t h e r s t
v e r s i o n o f S t a n d a r d M L M i l 8 4 ] .
A s e c o n d a p p r o a c h i s t o m a k e e q u a l i t y f u l l y p o l y -
m o r p h i c . I n t h i s c a s e , i t s t y p e i s
( = = ) : : a - > a - > B o o l
w h e r e a i s a t y p e v a r i a b l e r a n g i n g o v e r e v e r y t y p e .
T h e t y p e o f t h e m e m b e r f u n c t i o n i s n o w
m e m b e r : : a ] - > a - > B o o l
( W e w r i t e a ] f o r t h e t y p e \ l i s t o f a " . ) T h i s m e a n s
t h a t a p p l y i n g e q u a l i t y t o f u n c t i o n s o r a b s t r a c t t y p e s
d o e s n o t g e n e r a t e a t y p e e r r o r . T h i s i s t h e a p p r o a c h
t a k e n i n M i r a n d a : i f e q u a l i t y i s a p p l i e d o n a f u n c -
t i o n t y p e , t h e r e s u l t i s a r u n - t i m e e r r o r ; i f e q u a l i t y i s
a p p l i e d o n a n a b s t r a c t t y p e , t h e r e s u l t i s t o t e s t t h e
r e p r e s e n t a t i o n f o r e q u a l i t y . T h i s l a s t m a y b e c o n s i d -
e r e d a b u g , a s i t v i o l a t e s t h e p r i n c i p l e o f a b s t r a c t i o n .
A t h i r d a p p r o a c h i s t o m a k e e q u a l i t y p o l y m o r p h i c
i n a l i m i t e d w a y . I n t h i s c a s e , i t s t y p e i s
( = = ) : : a
( = = )
- > a
( = = )
- > B o o l
w h e r e a
( = = )
i s a t y p e v a r i a b l e r a n g i n g o n l y o v e r
t y p e s t h a t a d m i t e q u a l i t y . T h e t y p e o f t h e m e m b e r
f u n c t i o n i s n o w
m e m b e r : : a
( = = )
] - > a
( = = )
- > B o o l
A p p l y i n g e q u a l i t y , o r m e m b e r , o n a f u n c t i o n t y p e o r
a b s t r a c t t y p e i s n o w a t y p e e r r o r . T h i s i s t h e a p -
p r o a c h c u r r e n t l y t a k e n i n S t a n d a r d M L , w h e r e a
( = = )
i s w r i t t e n ' ' a , a n d c a l l e d a n \ e q t y p e v a r i a b l e " .
P o l y m o r p h i c e q u a l i t y p l a c e s c e r t a i n d e m a n d s u p o n
t h e i m p l e m e n t o r o f t h e r u n - t i m e s y s t e m . F o r i n -
s t a n c e , i n S t a n d a r d M L r e f e r e n c e t y p e s a r e t e s t e d
f o r e q u a l i t y d i e r e n t l y f r o m o t h e r t y p e s , s o i t m u s t
b e p o s s i b l e a t r u n - t i m e t o d i s t i n g u i s h r e f e r e n c e s f r o m
o t h e r p o i n t e r s .
O b j e c t - o r i e n t e d p r o g r a m m i n g . I t w o u l d b e n i c e
i f p o l y m o r p h i c e q u a l i t y c o u l d b e e x t e n d e d t o i n c l u d e
u s e r - d e n e d e q u a l i t y o p e r a t i o n s o v e r a b s t r a c t t y p e s .
T o i m p l e m e n t t h i s , w e w o u l d n e e d t o r e q u i r e t h a t
e v e r y o b j e c t c a r r y w i t h i t a p o i n t e r t o a m e t h o d a
p r o c e d u r e f o r p e r f o r m i n g t h e e q u a l i t y t e s t . I f w e a r e
t o h a v e m o r e t h a n o n e o p e r a t i o n w i t h t h i s p r o p e r t y ,
t h e n e a c h o b j e c t s h o u l d c a r r y w i t h i t a p o i n t e r t o a
d i c t i o n a r y o f a p p r o p r i a t e m e t h o d s . T h i s i s e x a c t l y
t h e a p p r o a c h u s e d i n o b j e c t - o r i e n t e d p r o g r a m m i n g
G R 8 3 ] .
I n t h e c a s e o f p o l y m o r p h i c e q u a l i t y , t h i s m e a n s
t h a t b o t h a r g u m e n t s o f t h e e q u a l i t y f u n c t i o n w i l l
c o n t a i n a p o i n t e r t o t h e s a m e d i c t i o n a r y ( s i n c e t h e y
a r e b o t h o f t h e s a m e t y p e ) . T h i s s u g g e s t s t h a t p e r -
h a p s d i c t i o n a r i e s s h o u l d b e p a s s e d a r o u n d i n d e p e n -
d e n t l y o f o b j e c t s ; n o w p o l y m o r p h i c e q u a l i t y w o u l d
b e p a s s e d o n e d i c t i o n a r y a n d t w o o b j e c t s ( m i n u s d i c -
t i o n a r i e s ) . T h i s i s t h e i n t u i t i o n b e h i n d t y p e c l a s s e s
a n d t h e t r a n s l a t i o n m e t h o d d e s c r i b e d h e r e .
3 A n i n t r o d u c t o r y e x a m p l e
W e w i l l n o w i n t r o d u c e t y p e c l a s s e s b y m e a n s o f a n
e x a m p l e .
S a y t h a t w e w i s h t o o v e r l o a d ( + ) ( * ) , a n d n e g a t e
( u n a r y m i n u s ) o n t y p e s I n t a n d F l o a t . T o d o s o , w e
i n t r o d u c e a n e w t y p e c l a s s , c a l l e d N u m , a s s h o w n i n
t h e c l a s s d e c l a r a t i o n i n F i g u r e 1 . T h i s d e c l a r a t i o n
m a y b e r e a d a s s t a t i n g \ a t y p e a b e l o n g s t o c l a s s N u m
i f t h e r e a r e f u n c t i o n s n a m e d ( + ) ( * ) , a n d n e g a t e
o f t h e a p p r o p r i a t e t y p e s , d e n e d o n i t . "
W e m a y n o w d e c l a r e i n s t a n c e s o f t h i s c l a s s , a s
s h o w n b y t h e t w o i n s t a n c e d e c l a r a t i o n s i n F i g u r e 1 .
T h e a s s e r t i o n N u m I n t m a y b e r e a d \ t h e r e a r e f u n c -
t i o n s n a m e d ( + ) ( * ) , a n d n e g a t e , o f t h e a p p r o p r i -
a t e t y p e s , d e n e d o n I n t " . T h e i n s t a n c e d e c l a r a t i o n
u s t i e s t h i s a s s e r t i o n b y g i v i n g a p p r o p r i a t e b i n d i n g s
f o r t h e t h r e e f u n c t i o n s . 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
m u s t v e r i f y t h a t t h e s e b i n d i n g s d o h a v e t h e a p p r o p r i -
a t e t y p e , i . e . , t h a t a d d I n t h a s t y p e I n t - > I n t - > I n t
a n d s i m i l a r l y f o r m u l I n t a n d n e g I n t . ( W e a s s u m e
t h a t a d d I n t m u l I n t , a n d n e g I n t a r e d e n e d i n t h e
s t a n d a r d p r e l u d e . ) T h e i n s t a n c e N u m F l o a t i s d e -
c l a r e d s i m i l a r l y .
A w o r d o n n o t a t i o n a l c o n v e n t i o n s : T y p e c l a s s
n a m e s a n d t y p e c o n s t r u c t o r n a m e s b e g i n w i t h a c a p i -
t a l l e t t e r , a n d t y p e v a r i a b l e n a m e s b e g i n w i t h a s m a l l
l e t t e r . H e r e , N u m i s a t y p e c l a s s , I n t a n d F l o a t a r e
t y p e c o n s t r u c t o r s , a n d a i s a t y p e v a r i a b l e .
W e m a y n o w d e n e
s q u a r e x = x * x
T h e r e e x i s t s a n a l g o r i t h m t h a t c a n i n f e r t h e t y p e
o f s q u a r e f r o m t h i s d e n i t i o n ( i t i s o u t l i n e d i n t h e
a p p e n d i x ) . I t d e r i v e s t h e t y p e :
s q u a r e : : N u m a = > a - > a
3
-
8/12/2019 Ad Hoc Polymorphism
4/17
c l a s s N u m a w h e r e
( + ) , ( * ) : : a - > a - > a
n e g a t e : : a - > a
i n s t a n c e N u m I n t w h e r e
( + ) = a d d I n t
( * ) = m u l I n t
n e g a t e = n e g I n t
i n s t a n c e N u m F l o a t w h e r e
( + ) = a d d F l o a t
( * ) = m u l F l o a t
n e g a t e = n e g F l o a t
s q u a r e : : N u m a = > a - > a
s q u a r e x = x * x
s q u a r e s : : N u m a , N u m b , N u m c = > ( a , b , c ) - > ( a , b , c )
s q u a r e s ( x , y , z ) = ( s q u a r e x , s q u a r e y , s q u a r e z )
F i g u r e 1 : D e n i t i o n o f a r i t h m e t i c o p e r a t i o n s
d a t a N u m D a = N u m D i c t ( a - > a - > a ) ( a - > a - > a ) ( a - > a )
a d d ( N u m D i c t a m n ) = a
m u l ( N u m D i c t a m n ) = m
n e g ( N u m D i c t a m n ) = n
n u m D I n t : : N u m D I n t
n u m D I n t = N u m D i c t a d d I n t m u l I n t n e g I n t
n u m D F l o a t : : N u m D F l o a t
n u m D F l o a t = N u m D i c t a d d F l o a t m u l F l o a t n e g F l o a t
s q u a r e ' : : N u m D a - > a - > a
s q u a r e ' n u m D a x = m u l n u m D a x x
s q u a r e s ' : : ( N u m D a , N u m D b , N u m D c ) - > ( a , b , c ) - > ( a , b , c )
s q u a r e s ' ( n u m D a , n u m D b , n u m D c ) ( x , y , z )
= ( s q u a r e ' n u m D a x , s q u a r e ' n u m D b y , s q u a r e ' n u m D c z )
F i g u r e 2 : T r a n s l a t i o n o f a r i t h m e t i c o p e r a t i o n s
4
-
8/12/2019 Ad Hoc Polymorphism
5/17
-
8/12/2019 Ad Hoc Polymorphism
6/17
c l a s s E q a w h e r e
( = = ) : : a - > a - > b o o l
i n s t a n c e E q I n t w h e r e
( = = ) = e q I n t
i n s t a n c e E q C h a r w h e r e
( = = ) = e q C h a r
m e m b e r : : E q a = > a ] - > a - > B o o l
m e m b e r ] y = F a l s e
m e m b e r ( x : x s ) y = ( x = = y ) \ / m e m b e r x s y
i n s t a n c e E q a , E q b = > E q ( a , b ) w h e r e
( u , v ) = = ( x , y ) = ( u = = x ) & ( v = = y )
i n s t a n c e E q a = > E q a ] w h e r e
] = = ] = T r u e
] = = y : y s = F a l s e
x : x s = = ] = F a l s e
x : x s = = y : y s = ( x = = y ) & ( x s = = y s )
d a t a S e t a = M k S e t a ]
i n s t a n c e E q a = > E q ( S e t a ) w h e r e
M k S e t x s = = M k S e t y s = a n d ( m a p ( m e m b e r x s ) y s )
& a n d ( m a p ( m e m b e r y s ) x s )
F i g u r e 3 : D e n i t i o n o f e q u a l i t y
T h e d e n i t i o n i s s u m m a r i s e d i n F i g u r e 3 . W e b e -
g i n b y d e c l a r i n g a c l a s s , E q , c o n t a i n i n g a s i n g l e o p -
e r a t o r , ( = = ) , a n d i n s t a n c e s E q I n t a n d E q C h a r o f
t h i s c l a s s .
W e t h e n d e n e t h e m e m b e r f u n c t i o n i n t h e u s u a l
w a y , a s s h o w n i n F i g u r e 3 . T h e t y p e o f m e m b e r n e e d
n o t b e g i v e n e x p l i c i t l y , a s i t c a n b e i n f e r r e d . T h e
i n f e r r e d t y p e i s :
m e m b e r : : E q a = > a ] - > a - > B o o l
T h i s i s r e a d \ m e m b e r h a s t y p e a ] - > a - > B o o l
f o r e v e r y t y p e a s u c h t h a t a i s i n c l a s s E q
( i . e . , s u c h t h a t e q u a l i t y i s d e n e d o n a ) " ( T h i s
i s e x a c t l y e q u i v a l e n t t o t h e S t a n d a r d M L t y p e
' ' a l i s t - > ' ' a - > b o o l , w h e r e ' ' a i s a n \ e q t y p e
v a r i a b l e " . ) W e m a y n o w w r i t e t e r m s s u c h a s
m e m b e r 1 , 2 , 3 ] 2
m e m b e r " H a s k e l l " ' k '
w h i c h b o t h e v a l u a t e t o T r u e
N e x t , w e g i v e a n i n s t a n c e d e n i n g e q u a l i t y o v e r
p a i r s . T h e r s t l i n e o f t h i s i n s t a n c e r e a d s , \ f o r e v e r y
a a n d b s u c h t h a t a i s i n c l a s s E q a n d b i s i n c l a s s E q
t h e p a i r ( a , b ) i s a l s o i n c l a s s E q . " I n o t h e r w o r d s ,
\ i f e q u a l i t y i s d e n e d o n a a n d e q u a l i t y i s d e n e d o n
b , t h e n e q u a l i t y i s d e n e d o n ( a , b ) . " T h e i n s t a n c e
d e n e s e q u a l i t y o n p a i r s i n t e r m s o f e q u a l i t y o n t h e
t w o c o m p o n e n t s , i n t h e u s u a l w a y .
S i m i l a r l y , i t i s p o s s i b l e t o d e n e e q u a l i t y o v e r l i s t s .
T h e r s t l i n e o f t h i s i n s t a n c e r e a d s , \ i f e q u a l i t y i s
d e n e d o n a , t h e n e q u a l i t y i s d e n e d o n t y p e ` l i s t o f
a ' . " W e m a y n o w w r i t e t e r m s s u c h a s
" h e l l o " = = " g o o d b y e "
1 , 2 , 3 ] , 4 , 5 , 6 ] ] = = ]
m e m b e r " H a s k e l l " , " A l o n z o " ] " M o s e s "
w h i c h a l l e v a l u a t e t o F a l s e
T h e n a l d a t a d e c l a r a t i o n d e n e s a n e w t y p e c o n -
s t r u c t o r S e t a n d a n e w v a l u e c o n s t r u c t o r M k S e t I f
a m o d u l e e x p o r t s S e t b u t h i d e s M k S e t , t h e n o u t -
s i d e o f t h e m o d u l e t h e r e p r e s e n t a t i o n o f S e t w i l l n o t
b e a c c e s s i b l e ; t h i s i s t h e m e c h a n i s m u s e d i n H a s k e l l
t o d e n e a b s t r a c t d a t a t y p e s . T h e n a l i n s t a n c e d e -
n e s e q u a l i t y o v e r s e t s . T h e r s t l i n e o f t h i s i n s t a n c e
r e a d s , \ i f e q u a l i t y i s d e n e d o n a , t h e n e q u a l i t y i s
6
-
8/12/2019 Ad Hoc Polymorphism
7/17
d a t a E q D a = E q D i c t ( a - > a - > B o o l )
e q ( E q D i c t e ) = e
e q D I n t : : E q D I n t
e q D I n t = E q D i c t e q I n t
e q D C h a r : : E q D I n t
e q D C h a r = E q D i c t e q C h a r
m e m b e r ' : : E q D a - > a ] - > a - > B o o l
m e m b e r ' e q D a ] y = F a l s e
m e m b e r ' e q D a ( x : x s ) y = e q e q D a x y \ / m e m b e r ' e q D a x s y
e q D P a i r : : ( E q D a , E q D b ) - > E q D ( a , b )
e q D P a i r ( e q D a , e q D b ) = E q D i c t ( e q P a i r ( e q D a , e q D b ) )
e q P a i r : : ( E q D a , E q D b ) - > ( a , b ) - > ( a , b ) - > B o o l
e q P a i r ( e q D a , e q D b ) ( x , y ) ( u , v ) = e q e q D a x u & e q e q D b y v
e q D L i s t : : E q D a - > E q D a ]
e q D L i s t e q D a = E q D i c t ( e q L i s t e q D a )
e q L i s t : : E q D a - > a ] - > a ] - > B o o l
e q L i s t e q D a ] ] = T r u e
e q L i s t e q D a ] ( y : y s ) = F a l s e
e q L i s t e q D a ( x : x s ) ] = F a l s e
e q L i s t e q D a ( x : x s ) ( y : y s ) = e q e q D a x y & e q ( e q D L i s t e q D a ) x s y s
F i g u r e 4 : T r a n s l a t i o n o f e q u a l i t y
d e n e d o n t y p e ` s e t o f a ' . " I n t h i s c a s e , s e t s a r e r e p -
r e s e n t e d i n t e r m s o f l i s t s , a n d t w o s e t s a r e t a k e n t o
b e e q u a l i f e v e r y m e m b e r o f t h e r s t i s a m e m b e r
o f t h e s e c o n d , a n d v i c e - v e r s a . ( T h e d e n i t i o n u s e s
s t a n d a r d f u n c t i o n s m a p , w h i c h a p p l i e s a f u n c t i o n t o
e v e r y e l e m e n t o f a l i s t , a n d a n d , w h i c h r e t u r n s t h e
c o n j u n c t i o n o f a l i s t o f b o o l e a n s . ) B e c a u s e s e t e q u a l -
i t y i s d e n e d i n t e r m s o f m e m b e r , a n d m e m b e r u s e s
o v e r l o a d e d e q u a l i t y , i t i s v a l i d t o a p p l y e q u a l i t y t o
s e t s o f i n t e g e r s , s e t s o f l i s t s o f i n t e g e r s , a n d e v e n s e t s
o f s e t s o f i n t e g e r s .
T h i s l a s t e x a m p l e s h o w s h o w t h e t y p e c l a s s m e c h -
a n i s m a l l o w s o v e r l o a d e d f u n c t i o n s t o b e d e n e d o v e r
a b s t r a c t d a t a t y p e s i n a n a t u r a l w a y . I n p a r t i c u l a r ,
t h i s p r o v i d e s a n i m p r o v e m e n t o v e r t h e t r e a t m e n t o f
e q u a l i t y p r o v i d e d i n S t a n d a r d M L o r M i r a n d a .
5 . 1 T r a n s l a t i o n o f e q u a l i t y
W e n o w c o n s i d e r h o w t h e t r a n s l a t i o n m e c h a n i s m a p -
p l i e s t o t h e e q u a l i t y e x a m p l e .
F i g u r e 4 s h o w s t h e t r a n s l a t i o n o f t h e d e c l a r a t i o n s
i n F i g u r e 3 . T h e r s t p a r t o f t h e t r a n s l a t i o n i n t r o -
d u c e s n o t h i n g n e w , a n d i s s i m i l a r t o t h e t r a n s l a t i o n
i n S e c t i o n 4 .
W e b e g i n b y d e n i n g a d i c i t i o n a r y E q D c o r r e s p o n d -
i n g t o t h e c l a s s E q . I n t h i s c a s e , t h e c l a s s c o n t a i n s
o n l y o n e o p e r a t i o n , ( = = ) , s o t h e d i c t i o n a r y h a s o n l y
o n e e n t r y . T h e s e l e c t o r f u n c t i o n e q t a k e s a d i c t i o -
n a r y o f t y p e E q D a a n d r e t u r n s t h e o n e e n t r y , o f
t y p e a - > a - > B o o l . C o r r e s p o n d i n g t o t h e i n s t a n c e s
E q I n t a n d E q C h a r w e d e n e t w o d i c t i o n a r i e s o f
t y p e s E q D I n t a n d E q D C h a r , c o n t a i n i n g t h e a p p r o -
p r i a t e e q u a l i t y f u n c t i o n s , a n d t h e f u n c t i o n m e m b e r
i s t r a n s l a t e d t o m e m b e r ' i n a s t r a i g h t f o r w a r d w a y .
H e r e a r e t h r e e t e r m s a n d t h e i r t r a n s l a t i o n s :
3 * 4 = = 1 2
- - > e q e q D I n t ( m u l n u m D I n t 3 4 ) 1 2
m e m b e r 1 , 2 , 3 ] 2
- - > m e m b e r ' e q D I n t 1 , 2 , 3 ] 2
m e m b e r " H a s k e l l " ' k '
- - > m e m b e r ' e q D C h a r " H a s k e l l " ' k '
T h e t r a n s l a t i o n o f t h e i n s t a n c e d e c l a r a t i o n f o r
7
-
8/12/2019 Ad Hoc Polymorphism
8/17
e q u a l i t y o v e r l i s t s i s a l i t t l e t r i c k i e r . R e c a l l t h a t t h e
i n s t a n c e d e c l a r a t i o n b e g i n s
i n s t a n c e E q a = > E q a ] w h e r e
T h i s s t a t e s t h a t e q u a l i t y i s d e n e d o v e r t y p e a ] i f
e q u a l i t y i s d e n e d o v e r t y p e a . C o r r e s p o n d i n g t o
t h i s , t h e i n s t a n c e d i c t i o n a r y f o r t y p e a ] i s p a r a m -
e t e r i s e d b y a d i c t i o n a r y f o r t y p e a , a n d s o h a s t h e
t y p e
e q D L i s t : : E q D a - > E q D a ]
T h e r e m a i n d e r o f t h e t r a n s l a t i o n i s s h o w n i n F i g u r e
4 , a s i s t h e t r a n s l a t i o n f o r e q u a l i t y o v e r p a i r s . H e r e
a r e t h r e e t e r m s a n d t h e i r t r a n s l a t i o n s :
" h e l l o " = = " g o o d b y e "
- - > e q ( e q D L i s t e q D C h a r )
" h e l l o "
" g o o d b y e "
1 , 2 , 3 ] , 4 , 5 , 6 ] ] = = ]
- - > e q ( e q D L i s t ( e q D L i s t e q D I n t ) )
1 , 2 , 3 ] , 4 , 5 , 6 ] ]
]
m e m b e r " H a s k e l l " , " A l o n z o " ] " M o s e s "
- - > m e m b e r ' ( e q D L i s t e q D C h a r )
" H a s k e l l " , " A l o n z o " ]
" M o s e s "
A s a n o p t i m i s a t i o n , i t i s e a s y f o r t h e c o m p i l e r t o p e r -
f o r m b e t a r e d u c t i o n s t o t r a n s f o r m t e r m s o f t h e f o r m
e q ( e q D L i s t e q D ) i n t o e q L i s t e q D , w h e r e e q D i s
a n y d i c t i o n a r y f o r e q u a l i t y . T h i s o p t i m i s a t i o n m a y
b e a p p l i e d t o t h e r s t t w o e x a m p l e s a b o v e , a n d a l s o
t o t h e d e n i t i o n o f e q L i s t i t s e l f i n F i g u r e 4 .
I t i s w o r t h w h i l e t o c o m p a r e t h e e c i e n c y o f t h i s
t r a n s l a t i o n t e c h n i q u e w i t h p o l y m o r p h i c e q u a l i t y a s
f o u n d i n S t a n d a r d M L o r M i r a n d a . T h e i n d i v i d u a l
o p e r a t i o n s , s u c h a s e q I n t a r e s l i g h t l y m o r e e c i e n t
t h a n p o l y m o r p h i c e q u a l i t y , b e c a u s e t h e t y p e o f t h e
a r g u m e n t i s k n o w n i n a d v a n c e . O n t h e o t h e r h a n d ,
o p e r a t i o n s s u c h a s m e m b e r a n d e q L i s t m u s t e x p l i c -
i t l y p a s s a n e q u a l i t y o p e r a t i o n a r o u n d , a n o v e r h e a d
t h a t p o l y m o r p h i c e q u a l i t y a v o i d s . F u r t h e r e x p e r i -
e n c e i s n e e d e d t o a s s e s t h e t r a d e - o b e t w e e n t h e s e
c o s t s .
6 S u b c l a s s e s
I n t h e p r e c e e d i n g , N u m a n d E q w e r e c o n s i d e r e d a s
c o m p l e t e l y s e p a r a t e c l a s s e s . I f w e w a n t t o u s e b o t h
n u m e r i c a l a n d e q u a l i t y o p e r a t i o n s , t h e n t h e s e e a c h
a p p e a r i n t h e t y p e s e p a r a t e l y :
m e m s q : : E q a , N u m a = > a ] - > a - > B o o l
m e m s q x s x = m e m b e r x s ( s q u a r e x )
A s a p r a c t i c a l m a t t e r , t h i s s e e m s a b i t o d d | w e
w o u l d e x p e c t e v e r y d a t a t y p e t h a t h a s ( + ) ( * ) , a n d
n e g a t e d e n e d o n i t t o h a v e ( = = ) d e n e d a s w e l l ; b u t
n o t t h e c o n v e r s e . T h u s i t s e e m s s e n s i b l e t o m a k e N u m
a s u b c l a s s o f E q
W e c a n d o t h i s a s f o l l o w s :
c l a s s E q a = > N u m a w h e r e
( + ) : : a - > a - > a
( * ) : : a - > a - > a
n e g a t e : : a - > a
T h i s a s s e r t s t h a t a m a y b e l o n g t o c l a s s N u m o n l y i f
i t a l s o b e l o n g s t o c l a s s E q . I n o t h e r w o r d s , N u m i s a
s u b c l a s s o f E q , o r , e q u i v a l e n t l y , E q i s a s u p e r c l a s s o f
N u m . T h e i n s t a n c e d e c l a r a t i o n s r e m a i n t h e s a m e a s
b e f o r e | b u t t h e i n s t a n c e d e c l a r a t i o n N u m I n t i s o n l y
v a l i d i f t h e r e i s a l s o a n i n s t a n c e d e c l a r a t i o n E q I n t
a c t i v e w i t h i n t h e s a m e s c o p e .
F r o m t h i s i t f o l l o w s t h a t w h e n e v e r a t y p e c o n t a i n s
N u m a i t m u s t a l s o c o n t a i n E q a ; t h e r e f o r e a s a c o n -
v e n i e n t a b b r e v i a t i o n w e p e r m i t E q a t o b e o m i t t e d
f r o m a t y p e w h e n e v e r N u m a i s p r e s e n t . T h u s , f o r
t h e t y p e o f m e m s q w e c o u l d n o w w r i t e
m e m s q : : N u m a = > a ] - > a - > B o o l
T h e q u a l i e r E q a n o l o n g e r n e e d s t o b e m e n t i o n e d ,
b e c a u s e i t i s i m p l i e d b y N u m a
I n g e n e r a l , e a c h c l a s s m a y h a v e a n y n u m b e r o f s u b
o r s u p e r c l a s s e s . H e r e i s a c o n t r i v e d e x a m p l e :
c l a s s T o p a w h e r e
f u n 1 : : a - > a
c l a s s T o p a = > L e f t a w h e r e
f u n 2 : : a - > a
c l a s s T o p a = > R i g h t a w h e r e
f u n 3 : : a - > a
c l a s s L e f t a , R i g h t a = > B o t t o m a
w h e r e
f u n 4 : : a - > a
T h e r e l a t i o n s h i p s a m o n g t h e s e t y p e s c a n b e d i a -
g r a m m e d a s f o l l o w s :
T o p
/ \
/ \
8
-
8/12/2019 Ad Hoc Polymorphism
9/17
L e f t R i g h t
\ /
\ /
B o t t o m
A l t h o u g h m u l t i p l e s u p e r c l a s s e s p o s e s o m e p r o b -
l e m s f o r t h e u s u a l m e a n s o f i m p l e m e n t i n g o b j e c t -
o r i e n t e d l a n g u a g e s , t h e y p o s e n o p r o b l e m s f o r t h e
t r a n s l a t i o n s c h e m e o u t l i n e d h e r e . T h e t r a n s l a t i o n
s i m p l y a s s u r e s t h a t t h e a p p r o p r i a t e d i c t i o n a r i e s a r e
p a s s e d a t r u n - t i m e ; n o s p e c i a l h a s h i n g s c h e m e s a r e
r e q u i r e d , a s i n s o m e o b j e c t - o r i e n t e d s y s t e m s .
7 C o n c l u s i o n
I t i s n a t u r a l t o t h i n k o f a d d i n g a s s e r t i o n s t o t h e c l a s s
d e c l a r a t i o n , s p e c i f y i n g p r o p e r t i e s t h a t e a c h i n s t a n c e
m u s t s a t i s f y :
c l a s s E q a w h e r e
( = = ) : : a - > a - > B o o l
% ( = = ) i s a n e q u i v a l e n c e r e l a t i o n
c l a s s N u m a w h e r e
z e r o , o n e : : a
( + ) , ( * ) : : a - > a - > a
n e g a t e : : a - > a
% ( z e r o , o n e , ( + ) , ( * ) , n e g a t e )
% f o r m a r i n g
I t i s v a l i d f o r a n y p r o o f t o r e l y o n t h e s e p r o p e r t i e s , s o
l o n g a s o n e p r o v e s t h a t t h e y h o l d f o r e a c h i n s t a n c e
d e c l a r a t i o n . H e r e t h e a s s e r t i o n s h a v e s i m p l y b e e n
w r i t t e n a s c o m m e n t s ; a m o r e s o p h i s t i c a t e d s y s t e m
c o u l d p e r h a p s v e r i f y o r u s e s u c h a s s e r t i o n s . T h i s s u g -
g e s t s a r e l a t i o n b e t w e e n c l a s s e s a n d o b j e c t - o r i e n t e d
p r o g r a m m i n g o f a d i e r e n t s o r t , s i n c e c l a s s d e c l a r a -
t i o n s n o w b e g i n t o r e s e m b l e o b j e c t d e c l a r a t i o n s i n
O B J F G J M 8 5 ] .
I t i s p o s s i b l e t o h a v e o v e r l o a d e d c o n s t a n t s , s u c h a s
z e r o a n d o n e i n t h e a b o v e e x a m p l e . H o w e v e r , u n r e -
s t r i c t e d o v e r l o a d i n g o f c o n s t a n t s l e a d s t o s i t u a t i o n s
w h e r e t h e o v e r l o a d i n g c a n n o t b e r e s o l v e d w i t h o u t
p r o v i d i n g e x t r a t y p e i n f o r m a t i o n . F o r i n s t a n c e , t h e
e x p r e s s i o n o n e * o n e i s m e a n i n g l e s s u n l e s s i t i s u s e d
i n a c o n t e x t t h a t s p e c i e s w h e t h e r i t s r e s u l t i s a n I n t
o r a F l o a t . F o r t h i s r e a s o n , w e h a v e b e e n c a r e f u l i n
t h i s p a p e r t o u s e c o n s t a n t s t h a t a r e n o t o v e r l o a d e d :
3 h a s t y p e I n t , a n d 3 . 1 4 h a s t y p e F l o a t . A m o r e
g e n e r a l t r e a t m e n t o f c o n s t a n t s s e e m s t o r e q u i r e c o -
e r c i o n b e t w e e n s u b t y p e s .
I t i s r e a s o n a b l e t o a l l o w a c l a s s t o a p p l y t o m o r e
t h a n o n e t y p e v a r i a b l e . F o r i n s t a n c e , w e m i g h t h a v e
c l a s s C o e r c e a b w h e r e
c o e r c e : : a - > b
i n s t a n c e C o e r c e I n t F l o a t w h e r e
c o e r c e = c o n v e r t I n t T o F l o a t
I n t h i s c a s e , t h e a s s e r t i o n C o e r c e a b m i g h t b e
t a k e n a s e q u i v a l e n t t o t h e a s s e r t i o n t h a t a i s a s u b -
t y p e o f b . T h i s s u g g e s t s a r e l a t i o n b e t w e e n t h i s w o r k
a n d w o r k o n b o u n d e d q u a n t i c a t i o n a n d o n s u b t y p e s
( s e e C W 8 5 , R e y 8 5 ] f o r e x c e l l e n t s u r v e y s o f w o r k i n
t h i s a r e a , a n d W a n 8 7 , C a r 8 8 ] f o r m o r e r e c e n t w o r k ) .
T y p e c l a s s e s m a y b e t h o u g h t o f a s a k i n d o f
b o u n d e d q u a n t i e r , l i m i t i n g t h e t y p e s t h a t a t y p e
v a r i a b l e m a y i n s t a n t i a t e t o . B u t u n l i k e o t h e r a p -
p r o a c h e s t o b o u n d e d q u a n t i c a t i o n , t y p e c l a s s e s d o
n o t i n t r o d u c e a n y i m p l i c i t c o e r c i o n s ( s u c h a s f r o m
s u b t y p e I n t t o s u p e r t y p e F l o a t , o r f r o m a r e c o r d
w i t h e l d s x y , a n d z t o a r e c o r d w i t h e l d s x a n d
y ) . F u r t h e r e x p l o r a t i o n o f t h e r e l a t i o n s h i p b e t w e e n
t y p e c l a s s e s a n d t h e s e o t h e r a p p r o a c h e s i s l i k e l y t o
b e f r u i t f u l .
T y p e c l a s s e s a l s o m a y b e t h o u g h t o f a s a k i n d
o f a b s t r a c t d a t a t y p e . E a c h t y p e c l a s s s p e c i e s
a c o l l e c t i o n o f f u n c t i o n s a n d t h e i r t y p e s , b u t n o t
h o w t h e y a r e t o b e i m p l e m e n t e d . I n a w a y , e a c h
t y p e c l a s s c o r r e s p o n d s t o a n a b s t r a c t d a t a t y p e w i t h
m a n y i m p l e m e n t a t i o n s , o n e f o r e a c h i n s t a n c e d e c -
l a r a t i o n . A g a i n , e x p l o r a t i o n o f t h e r e l a t i o n s h i p b e -
t w e e n t y p e c l a s s e s a n d c u r r e n t w o r k o n a b s t r a c t d a t a
t y p e s C W 8 5 , M P 8 5 , R e y 8 5 ] a p p e a r s t o b e c a l l e d f o r .
W e h a v e a l r e a d y r e f e r r e d t o t h e w o r k o f K a e s . O n e
a d v a n c e o f o u r w o r k o v e r h i s i s t h e c o n c e p t u a l a n d
n o t a t i o n a l b e n e t o f g r o u p i n g o v e r l o a d e d f u n c t i o n s
i n t o c l a s s e s . I n a d d i t i o n , o u r s y s t e m i s m o r e g e n -
e r a l ; K a e s c a n n o t h a n d l e o v e r l o a d i n g s i n v o l v i n g m o r e
t h a n o n e t y p e v a r i a b l e , s u c h a s t h e c o e r c e e x a m p l e
a b o v e . F i n a l l y , o u r t r a n s l a t i o n r u l e s a r e a n i m p r o v e -
m e n t o v e r h i s . K a e s o u t l i n e s t w o s e t s o f t r a n s l a t i o n
r u l e s ( w h i c h h e c a l l s \ s e m a n t i c s " ) , o n e s t a t i c a n d o n e
d y n a m i c . H i s d y n a m i c s e m a n t i c s i s m o r e l i m i t e d i n
p o w e r t h a n t h e l a n g u a g e d e s c r i b e d h e r e ; h i s s t a t i c
s e m a n t i c s a p p e a r s s i m i l a r i n p o w e r , b u t , u n l i k e t h e
t r a n s l a t i o n d e s c r i b e d h e r e , c a n g r e a t l y i n c r e a s e t h e
s i z e o f a p r o g r a m .
O n e d r a w b a c k o f o u r t r a n s l a t i o n m e t h o d i s t h a t
i t i n t r o d u c e s n e w p a r a m e t e r s t o b e p a s s e d a t r u n -
t i m e , c o r r e s p o n d i n g t o m e t h o d d i c t i o n a r i e s . I t m a y
b e p o s s i b l e t o e l i m i n a t e s o m e o f t h e s e c o s t s b y u s -
i n g p a r t i a l e v a l u a t i o n B E J 8 8 ] t o g e n e r a t e v e r s i o n s
o f f u n c t i o n s s p e c i a l i s e d f o r c e r t a i n d i c t i o n a r i e s ; t h i s
w o u l d r e d u c e r u n t i m e a t t h e c o s t o f i n c r e a s i n g c o d e
s i z e . F u r t h e r w o r k i s n e e d e d t o a s s e s s t h e t r a d e - o s
9
-
8/12/2019 Ad Hoc Polymorphism
10/17
-
8/12/2019 Ad Hoc Polymorphism
11/17
I d e n t i e r s x
E x p r e s s i o n s e = x
e
0
e
1
x : e
l e t x = e
0
i n e
1
o v e r x i n e
i n s t x = e
0
i n e
1
T y p e V a r i a b l e s
T y p e C o n s t r u c t o r s
T y p e s : : = ( ! ) (
1
: : :
n
)
P r e d i c a t e d T y p e s : : = ( x )
T y p e - s c h e m e s = 8
F i g u r e 5 : S y n t a x o f e x p r e s s i o n s a n d t y p e s
o v e r e q 8 E q i n
i n s t e q E q I n t = e q I n t i n
i n s t e q E q C h a r = e q C h a r i n
i n s t e q 8 8 ( e q E q ) ( e q E q ) E q ( )
= p : q : e q ( f s t p ) ( f s t q ) e q ( s n d p ) ( s n d q ) i n
e q ( 1 ` a ' ) ( 2 ` b ' )
F i g u r e 6 : D e n i t i o n o f e q u a l i t y , f o r m a l i s e d
o v e r n u m D 8 N u m i n
i n s t n u m D N u m I n t = ( a d d I n t m u l I n t n e g I n t ) i n
i n s t n u m D N u m F l o a t = ( a d d F l o a t m u l F l o a t n e g F l o a t ) i n
l e t ( + ) = f s t n u m D i n
l e t ( ) = s n d n u m D i n
l e t n e g a t e = t h d n u m D i n
l e t s q u a r e = x : x x i n
s q u a r e 3
F i g u r e 7 : D e n i t i o n o f a r i t h m e t i c o p e r a t i o n s , f o r m a l i s e d
1 1
-
8/12/2019 Ad Hoc Polymorphism
12/17
( e q
o
8 E q )
( e q
i
E q I n t n e q
( E q I n t )
)
( e q
i
E q C h a r n e q
( E q C h a r )
)
( e q
i
8 8 ( e q E q ) ( e q E q ) E q ( ) n e q
( 8 8 ( e q E q ) ( e q E q ) E q ( ) )
)
( e q E q n e q
( E q )
)
( e q E q n e q
( E q )
)
( p ( ) n p )
( q ( ) n q )
F i g u r e 8 : S o m e a s s u m p t i o n s
T A U T A ( x n
x
) x n
x
T A U T A ( x
i
n
x
) x n
x
A e 8 n e
S P E C
A e n n e
A e n e
n o t f r e e i n A
G E N
A e 8 n e
A e ( ! ) n e
A e n e
C O M B
A ( e e ) n ( e e )
A
x
( x n x ) e n
e
A B S
A ( x : e ) : : ( ! ) n ( x : e )
A e n e
A
x
( x n x ) e n e
L E T
A ( l e t x = e i n e ) n ( l e t x = e i n e )
F i g u r e 9 : T y p i n g a n d t r a n s l a t i o n r u l e s , p a r t 1
1 2
-
8/12/2019 Ad Hoc Polymorphism
13/17
A . 3 A s s u m p t i o n s
T y p i n g i s d o n e i n t h e c o n t e x t o f a s e t o f a s s u m p -
t i o n s , A . T h e a s s u m p t i o n s b i n d t y p i n g a n d t r a n s l a -
t i o n i n f o r m a t i o n t o t h e f r e e i d e n t i e r s i n a n e x p r e s -
s i o n . T h i s i n c l u d e s i d e n t i e r s b o u n d i n l a m b d a a n d
l e t e x p r e s s i o n , a n d o v e r l o a d e d i d e n t i e r s . A l t h o u g h
w e w r i t e t h e m a s s e q u e n c e s , a s s u m p t i o n s a r e s e t s ,
a n d t h e r e f o r e t h e o r d e r i s i r r e l e v a n t .
T h e r e a r e t h r e e f o r m s o f b i n d i n g i n a n a s s u m p t i o n
l i s t :
( x
o
) i s u s e d f o r o v e r l o a d e d i d e n t i e r s ;
( x
i
n x
) i s u s e d f o r d e c l a r e d i n s t a n c e s o f
o v e r l o a d e d i d e n t i e r s ; a n d
( x n x ) i s u s e d f o r l a m b d a a n d l e t b o u n d
v a r i a b l e s , a n d a s s u m e d i n s t a n c e s o f o v e r l o a d e d
i d e n t i e r s .
I n ( x n x ) a n d ( x
i
n x ) , t h e i d e n t i e r x i s t h e
t r a n s l a t i o n o f x I f x i s n o t a n o v e r l o a d e d i d e n t i e r
( t h a t i s , i f x i s b o u n d b y a l a m b d a o r l e t e x p r e s s i o n ) ,
t h e n t h e a s s u m p t i o n f o r x h a s t h e f o r m ( x n x )
s o x s i m p l y t r a n s l a t e s a s i t s e l f .
F i g u r e 8 s h o w s t h e a s s u m p t i o n s a v a i l a b l e w h e n a p -
p l y i n g t h e i n f e r e n c e r u l e s t o t h e e x p r e s s i o n
p : q : e q ( f s t p ) ( f s t q ) e q ( s n d p ) ( s n d q )
i n F i g u r e 6 . T h e r e a r e t h r e e ( : :
i
) b i n d i n g s , c o r r e -
s p o n d i n g t o t h e t h r e e i n s t a n c e d e c l a r a t i o n s , a n d t w o
( : : ) b i n d i n g s f o r t h e t w o b o u n d v a r i a b l e s , a n d t w o
( : : ) b i n d i n g s c o r r e s p o n d i n g t o a s s u m e d i n s t a n c e s o f
e q u a l i t y . ( W e s h a l l s e e l a t e r h o w a s s u m e d i n s t a n c e s
a r e i n t r o d u c e d b y t h e P R E D r u l e . )
A . 4 I n s t a n c e s
G i v e n a s e t o f a s s u m p t i o n s A , w e d e n e a n i n s t a n c e
r e l a t i o n b e t w e e n t y p e - s c h e m e s ,
A
T h i s c a n b e r e a d a s \ i s m o r e g e n e r a l t h a n u n d e r
a s s u m p t i o n s A " . T h i s i s t h e s a m e a s t h e r e l a t i o n s h i p
d e n e d b y D a m a s a n d M i l n e r , b u t e x t e n d e d t o a p p l y
t o p r e d i c a t e d t y p e s .
O n l y c e r t a i n s e t s o f a s s u m p t i o n s a r e v a l i d . T h e
d e n i t i o n o f v a l i d i t y d e p e n d s o n t h e
A
r e l a t i o n , s o
t h e r e i s a ( w e l l - f o u n d e d ) m u t u a l r e c u r s i o n b e t w e e n
t h e d e n i t i o n o f v a l i d a s s u m p t i o n s a n d t h e d e n i t i o n
o f
A
. W e g i v e t h e d e n i t i o n o f
A
i n t h i s s e c t i o n ,
a n d t h e d e n i t i o n o f v a l i d a s s u m p t i o n s i n t h e n e x t .
T h e i n s t a n c e r e l a t i o n
A
w h e r e = 8
1
: : :
n
a n d = 8
1
: : :
m
i s
d e n e d a s f o l l o w s :
A
i
( 1 )
i
i s n o t f r e e i n a n d
( 2 ) 9
1
; : : : ;
n
1
=
1
; : : : ;
n
=
n
A
T h i s p a r t i s s i m i l a r t o t h e d e n i t i o n i n D a m a s /
M i l n e r . T h e b o u n d v a r i a b l e s o f a r e s p e c i a l i s e d a n d
t h e r e s u l t i n g p r e d i c a t e d t y p e s a r e c o m p a r e d .
D e n e
A
i t h e t y p e p a r t o f e q u a l s t h e t y p e
p a r t o f ( t h e s a m e c o n d i t i o n a s D a m a s / M i l n e r ) ,
a n d f o r e v e r y p r e d i c a t e ( x ) i n , e i t h e r
t h e r e i s a p r e d i c a t e o f t h e f o r m ( x ) i n ( i . e .
t h e p r e d i c a t e a p p e a r s i n b o t h t y p e s ) ; o r
t h e p r e d i c a t e c a n b e e l i m i n a t e d u n d e r a s s u m p -
t i o n s A
A p r e d i c a t e ( x ) c a n b e e l i m i n a t e d u n d e r A i
e i t h e r
( x n x ) i s i n A o r
( x
i
n x ) i s i n A a n d
A
F o r e x a m p l e , i f A
0
i s t h e s e t o f a s s u m p t i o n s i n
F i g u r e 8 , t h e n
( 8 ( e q E q ) ! ! B o o l )
A
0
( I n t ! I n t ! B o o l )
h o l d s . O n t h e o t h e r h a n d ,
( 8 ( e q E q ) ! ! B o o l )
A
0
( F l o a t ! F l o a t ! B o o l )
d o e s n o t h o l d , s i n c e A
0
c o n t a i n s n o b i n d i n g a s s e r t i n g
t h a t e q h a s a n i n s t a n c e a t t y p e F l o a t
T w o t y p e - s c h e m e s a r e u n i a b l e i f t h e y o v e r l a p ,
t h a t i s , i f t h e r e e x i s t s a t y p e t h a t i s a n i n s t a n c e o f
b o t h u n d e r s o m e s e t o f a s s u m p t i o n s . W e s a y t h a t
a n d a r e u n i a b l e i f t h e r e e x i s t s a t y p e a n d v a l i d
s e t o f a s s u m p t i o n s A s u c h t h a t
A
A
W e w r i t e # i f a n d a r e n o t u n i a b l e .
1 3
-
8/12/2019 Ad Hoc Polymorphism
14/17
A ( x n x
) e n
e
P R E D ( x
o
) 2 A
A e ( x ) n ( x
e )
A e ( x ) n e
A x n e
R E L ( x
o
) 2 A
A e n ( e e )
A
x
( x
o
) e n e
O V E R
A ( o v e r x i n e ) n e
A ( x
i
n x
) e n e
A ( x
i
n x
) e n e
I N S T ( x
o
) 2 A
A ( i n s t x = e i n e ) n ( l e t x
= e i n e )
F i g u r e 1 0 : T y p i n g a n d t r a n s l a t i o n r u l e s , p a r t 2
l e t e q
( E q I n t )
= e q I n t i n
l e t e q
( E q C h a r )
= e q C h a r i n
l e t e q
( 8 8 ( e q E q ) ( e q E q ) E q ( ) )
= e q
( E q )
e q
( E q )
: p : q :
e q
( E q )
( f s t p ) ( f s t q ) e q
( E q )
( s n d p ) ( s n d q ) i n
e q
( 8 8 ( e q E q ) ( e q E q ) E q ( ) )
e q
( E q I n t )
e q
( E q C h a r )
( 1 ` a ' ) ( 2 ` b ' )
F i g u r e 1 1 : T r a n s l a t i o n o f e q u a l i t y , f o r m a l i s e d
A
1
( e q
o
8 E q )
( e q I n t E q I n t n e q I n t )
( e q C h a r E q I n t n e q C h a r )
e
1
i n s t e q E q I n t = e q I n t i n
i n s t e q E q C h a r = e q C h a r i n
e q
F i g u r e 1 2 : A p r o b l e m a t i c e x p r e s s i o n
1 4
-
8/12/2019 Ad Hoc Polymorphism
15/17
A . 5 V a l i d a s s u m p t i o n s
A l l s e t s o f a s s u m p t i o n s u s e d w i t h i n p r o o f s m u s t b e
v a l i d . T h e v a l i d s e t s o f a s s u m p t i o n s a r e i n d u c t i v e l y
d e n e d a s f o l l o w s :
E m p t y . T h e e m p t y a s s u m p t i o n s e t , f g , i s v a l i d .
N o r m a l i d e n t i e r I f A i s a v a l i d a s s u m p t i o n s e t ,
x i s a n i d e n t i e r t h a t d o e s n o t a p p e a r i n A , a n d
i s a t y p e s c h e m e , t h e n
A ( x n x )
i s a v a l i d a s s u m p t i o n s e t .
O v e r l o a d e d i d e n t i e r I f A i s a v a l i d a s s u m p t i o n
s e t , x i s a n i d e n t i e r t h a t d o e s n o t a p p e a r i n A
i s a t y p e s c h e m e , a n d
1
; : : : ;
m
a r e t y p e s a n d
1
; : : : ;
n
a r e t y p e s s c h e m e s s u c h t h a t
{
A
i
, f o r i f r o m 1 t o n , a n d
{
A
i
, f o r i f r o m 1 t o m , a n d
{
i
#
j
, f o r d i s t i n c t i j f r o m 1 t o n
t h e n
A ( x
o
)
( x
i
1
n x
1
) ; : : : ; ( x
i
n
n x
n
)
( x
1
n x
1
) ; : : : ; ( x
m
n x
m
)
i s a v a l i d a s s u m p t i o n s e t .
F o r e x a m p l e , t h e a s s u m p t i o n s i n F i g u r e 8 a r e a
v a l i d s e t . H o w e v e r , t h i s s e t w o u l d b e i n v a l i d i f a u g -
m e n t e d w i t h t h e b i n d i n g
( e q
i
8 E q ( C h a r ) n e q
( 8 E q ( C h a r ) )
)
a s t h i s i n s t a n c e o v e r l a p s w i t h o n e a l r e a d y i n t h e s e t .
A . 6 I n f e r e n c e r u l e s
W e n o w g i v e i n f e r e n c e r u l e s t h a t c h a r a c t e r i s e w e l l -
t y p i n g s o f t h e f o r m
A e n e
T h e r u l e s b r e a k i n t o t w o g r o u p s , s h o w n i n F i g u r e s 9
a n d 1 0 . T h e r s t g r o u p i s b a s e d d i r e c t l y o n t h e
D a m a s / M i l n e r r u l e s ( F i g u r e 9 ) . T h e r e a r e t w o s m a l l
d i e r e n c e s : t r a n s l a t i o n s h a v e b e e n a d d e d t o e a c h r u l e
i n a s t r a i g h t f o r w a r d w a y , a n d t h e r e a r e t w o T A U T
r u l e s i n s t e a d o f o n e ( o n e r u l e f o r ( : : ) b i n d i n g s a n d
o n e f o r ( : :
i
) b i n d i n g s ) .
F o r e x a m p l e , l e t A
0
b e t h e s e t o f a s s u m p t i o n s
s h o w n i n F i g u r e 8 , t o g e t h e r w i t h a s s u m p t i o n s a b o u t
t h e t y p e s o f i n t e g e r a n d c h a r a c t e r c o n s t a n t s . T h e n
t h e a b o v e r u l e s a r e s u c i e n t t o d e r i v e t h a t
A
0
( e q 1 2 ) : : B o o l n ( e q
( E q I n t )
1 2 )
A
0
( e q ` a ' ` b ' ) : : B o o l n ( e q
( E q C h a r )
` a ' ` b ' )
T h a t i s , t h e s e r u l e s a l o n e a r e s u c i e n t t o r e s o l v e
s i m p l e o v e r l o a d i n g .
M o r e c o m p l i c a t e d u s e s o f o v e r l o a d i n g r e q u i r e t h e
r e m a i n i n g f o u r r u l e s , s h o w n i n F i g u r e 1 0 . T h e r s t
t w o d e a l w i t h t h e i n t r o d u c t i o n a n d e l i m i n a t i o n o f
p r e d i c a t e s , a n d t h e s e c o n d t w o d e a l w i t h t h e o v e r
a n d i n s t c o n s t r u c t s .
A s w e h a v e s e e n , e x p r e s s i o n s w i t h t y p e s t h a t c o n -
t a i n c l a s s e s ( t h a t i s , e x p r e s s i o n s w i t h p r e d i c a t e d
t y p e s ) a r e t r a n s l a t e d t o l a m b d a a b s t r a c t i o n s t h a t
r e q u i r e a d i c t i o n a r y t o b e p a s s e d a t r u n - t i m e . T h i s
i d e a i s e n c a p s u l a t e d i n t h e P R E D ( \ p r e d i c a t e " ) a n d
R E L ( \ r e l e a s e " ) r u l e s . T h e P R E D a n d R E L r u l e s
i n t r o d u c e a n d e l i m i n a t e p r e d i c a t e s a n a l o g o u s l y t o
t h e w a y t h a t t h e G E N a n d S P E C r u l e s i n t r o d u c e
a n d e l i m i n a t e b o u n d t y p e v a r i a b l e s . I n p a r t i c u l a r ,
t h e P R E D r u l e a d d s a p r e d i c a t e t o a t y p e ( a n d h a s
a l a m b d a e x p r e s s i o n a s i t s t r a n s l a t i o n ) a n d t h e R E L
r u l e r e m o v e s a p r e d i c a t e f r o m a t y p e ( a n d h a s a n a p -
p l i c a t i o n a s i t s t r a n s l a t i o n ) .
T h e O V E R r u l e t y p e s o v e r e x p r e s s i o n s a d d i n g
t h e a p p r o p r i a t e ( : :
o
) b i n d i n g t o t h e e n v i r o n m e n t ,
a n d t h e I N S T r u l e t y p e s i n s t e x p r e s s i o n s a d d i n g
t h e a p p r o p r i a t e ( : :
i
) b i n d i n g t o t h e e n v i r o n m e n t .
T h e v a l i d i t y c o n d i t i o n o n s e t s o f a s s u m p t i o n s e n s u r e s
t h a t o v e r l o a d e d i d e n t i e r s a r e o n l y i n s t a n c e d a t v a l i d
t y p e s .
N o t i c e t h a t n o n e o f t h e t r a n s l a t i o n s c o n t a i n o v e r
o r i n s t e x p r e s s i o n s , t h e r e f o r e , t h e y c o n t a i n n o o v e r -
l o a d i n g . I t i s e a s y t o v e r i f y t h a t t h e t r a n s l a t i o n s a r e
t h e m s e l v e s w e l l - t y p e d i n t h e H i n d l e y / M i l n e r s y s t e m .
F o r e x a m p l e , t h e p r o g r a m i n F i g u r e 6 i s t r a n s l a t e d
b y t h e s e r u l e s i n t o t h e p r o g r a m i n F i g u r e 1 1 . T h e
r e a d e r c a n e a s i l y v e r i f y t h a t t h i s c o r r e s p o n d s t o t h e
t r a n s l a t i o n f r o m F i g u r e 3 t o F i g u r e 4 . W e h a v e t h u s
s h o w n h o w t o f o r m a l i s e t h e t y p i n g a n d t r a n s f o r m a -
t i o n i d e a s t h a t w e r e p r e s e n t e d i n f o r m a l l y i n t h e b o d y
o f t h e p a p e r .
A . 7 P r i n c i p a l t y p i n g s
G i v e n A a n d e , w e c a l l a p r i n c i p a l t y p e s c h e m e f o r
e u n d e r A i
A e n e ; a n d
1 5
-
8/12/2019 Ad Hoc Polymorphism
16/17
f o r e v e r y i f A e n e t h e n
A
A k e y r e s u l t i n t h e H i n d l e y / M i l n e r s y s t e m i s t h a t
e v e r y e x p r e s s i o n e t h a t h a s a w e l l - t y p i n g h a s a p r i n -
c i p a l t y p e s c h e m e .
W e c o n j e c t u r e t h a t f o r e v e r y v a l i d s e t o f a s s u m p -
t i o n s A a n d e v e r y e x p r e s s i o n e c o n t a i n i n g n o o v e r o r
i n s t e x p r e s s i o n s , i f e h a s a w e l l - t y p i n g u n d e r A t h e n
e h a s a p r i n c i p a l t y p e s c h e m e u n d e r A
F o r e x a m p l e , l e t A
0
b e t h e s e t o f a s s u m p t i o n s i n
F i g u r e 8 . T h e n t h e t y p i n g
A
0
e q 8 E q n e q
( E q a l p h a )
i s p r i n c i p a l . E x a m p l e s o f n o n - p r i n c i p a l t y p i n g s a r e
A
0
e q E q I n t n e q
( E q I n t )
A
0
e q E q C h a r n e q
( E q C h a r )
E a c h o f t h e s e i s a n i n s t a n c e o f t h e p r i n c i p a l t y p i n g
u n d e r a s s u m p t i o n s A
0
T h e e x i s t e n c e o f p r i n c i p a l t y p e s i s p r o b l e m a t i c f o r
e x p r e s s i o n s t h a t c o n t a i n o v e r a n d i n s t e x p r e s s i o n s .
F o r e x a m p l e , l e t A
1
a n d e
1
b e t h e a s s u m p t i o n s e t
a n d e x p r e s s i o n i n F i g u r e 1 2 . T h e n i t i s p o s s i b l e t o
d e r i v e t h e t y p i n g s
A
1
e
1
E q I n t n e q I n t
A
1
e
1
E q C h a r n e q C h a r
B u t t h e r e i s n o p r i n c i p a l t y p e ! O n e p o s s i b l e r e s o l u -
t i o n o f t h i s i s t o r e q u i r e t h a t o v e r a n d i n s t d e c l a r a -
t i o n s h a v e g l o b a l s c o p e . I t r e m a i n s a n o p e n q u e s t i o n
w h e t h e r t h e r e i s s o m e l e s s d r a s t i c r e s t r i c t i o n t h a t
s t i l l e n s u r e s t h e e x i s t e n c e o f p r i n c i p a l t y p e s .
R e f e r e n c e s
B E J 8 8 ] D . B j r n e r , A . E r s h o v , a n d N . D . J o n e s ,
e d i t o r s , P a r t i a l E v a l u a t i o n a n d M i x e d
C o m p u t a t i o n , N o r t h - H o l l a n d , 1 9 8 8 ( t o
a p p e a r ) .
C W 8 5 ] L . C a r d e l l i a n d P . W e g n e r , O n u n d e r -
s t a n d i n g t y p e s , d a t a a b s t r a c t i o n , a n d
p o l y m o r p h i s m . C o m p u t i n g S u r v e y s 1 7 4
D e c e m b e r 1 9 8 5 .
C a r 8 8 ] L . C a r d e l l i , S t r u c t u r a l s u b t y p i n g a n d t h e
n o t i o n o f p o w e r t y p e . I n P r o c e e d i n g s o f
t h e 1 5 ' t h A n n u a l S y m p o s i u m o n P r i n -
c i p l e s o f P r o g r a m m i n g L a n g u a g e s , S a n
D i e g o , C a l i f o r n i a , J a n u a r y 1 9 8 8 .
D M 8 2 ] L . D a m a s a n d R . M i l n e r , P r i n c i p a l t y p e
s c h e m e s f o r f u n c t i o n a l p r o g r a m s . I n P r o -
c e e d i n g s o f t h e 9 ' t h A n n u a l S y m p o s i u m
o n P r i n c i p l e s o f P r o g r a m m i n g L a n g u a g e s
A l b u q u e r q u e , N . M . , J a n u a r y 1 9 8 2 .
F G J M 8 5 ] K . F u t a s a g i , J . A . G o g u e n , J . - P . J o u a n -
n a u d , a n d J . M e s e g u e r , P r i n c i p l e s o f
O B J 2 . I n P r o c e e d i n g s o f t h e 1 2 ' t h A n -
n u a l S y m p o s i u m o n P r i n c i p l e s o f P r o -
g r a m m i n g L a n g u a g e s , J a n u a r y 1 9 8 5 .
G R 8 3 ] A . G o l d b e r g a n d D . R o b s o n , S m a l l t a l k -
8 0 : T h e L a n g u a g e a n d I t s I m p l e m e n t a -
t i o n . A d d i s o n - W e s l e y , 1 9 8 3 .
H i n 6 9 ] R . H i n d l e y , T h e p r i n c i p a l t y p e s c h e m e
o f a n o b j e c t i n c o m b i n a t o r y l o g i c . T r a n s .
A m . M a t h . S o c . 1 4 6 , p p . 2 9 { 6 0 , D e c e m -
b e r 1 9 6 9 .
H M M 8 6 ] R . H a r p e r , D . M a c Q u e e n , a n d R . M i l n e r ,
S t a n d a r d M L . R e p o r t E C S - L F C S - 8 6 - 2 ,
E d i n b u r g h U n i v e r s i t y , C o m p u t e r S c i e n c e
D e p t . , 1 9 8 6 .
H M T 8 8 ] R . H a r p e r , R . M i l n e r , a n d M . T o f t e , T h e
d e n i t i o n o f S t a n d a r d M L , v e r s i o n 2 . R e -
p o r t E C S - L F C S - 8 8 - 6 2 , E d i n b u r g h U n i -
v e r s i t y , C o m p u t e r S c i e n c e D e p t . , 1 9 8 8 .
K a e 8 8 ] S . K a e s , P a r a m e t r i c p o l y m o r p h i s m . I n
P r o c e e d i n g s o f t h e 2 ' n d E u r o p e a n S y m -
p o s i u m o n P r o g r a m m i n g , N a n c y , F r a n c e ,
M a r c h 1 9 8 8 . L N C S 3 0 0 , S p r i n g e r - V e r l a g ,
1 9 8 8 .
M i l 7 8 ] R . M i l n e r , A t h e o r y o f t y p e p o l y m o r -
p h i s m i n p r o g r a m m i n g . J . C o m p u t . S y s t .
S c i . 1 7 , p p . 3 4 8 { 3 7 5 , 1 9 7 8 .
M i l 8 4 ] R . M i l n e r , A p r o p o s a l f o r S t a n d a r d M L .
I n P r o c e e d i n g s o f t h e S y m p o s i u m o n L i s p
a n d F u n c t i o n a l P r o g r a m m i n g , A u s t i n ,
T e x a s , A u g u s t 1 9 8 4 .
M i l 8 7 ] R . M i l n e r , C h a n g e s t o t h e S t a n d a r d M L
c o r e l a n g u a g e . R e p o r t E C S - L F C S - 8 7 - 3 3 ,
E d i n b u r g h U n i v e r s i t y , C o m p u t e r S c i e n c e
D e p t . , 1 9 8 7 .
M P 8 5 ] J . C . M i t c h e l l a n d G . D . P l o t k i n , A b -
s t r a c t t y p e s h a v e e x i s t e n t i a l t y p e . I n P r o -
c e e d i n g s o f t h e 1 2 ' t h A n n u a l S y m p o s i u m
o n P r i n c i p l e s o f P r o g r a m m i n g L a n g u a g e s
J a n u a r y 1 9 8 5 .
1 6
-
8/12/2019 Ad Hoc Polymorphism
17/17
R e y 8 5 ] J . C . R e y n o l d s , T h r e e a p p r o a c h e s t o
t y p e s t r u c t u r e . I n M a t h e m a t i c a l F o u n -
d a t i o n s o f S o f t w a r e D e v e l o p m e n t , L N C S
1 8 5 , S p r i n g e r - V e r l a g , 1 9 8 5 .
S t r 6 7 ] C . S t r a c h e y , F u n d a m e n t a l c o n c e p t s i n
p r o g r a m m i n g l a n g u a g e s . L e c t u r e n o t e s
f o r I n t e r n a t i o n a l S u m m e r S c h o o l i n C o m -
p u t e r P r o g r a m m i n g , C o p e n h a g e n , A u -
g u s t 1 9 6 7 .
T u r 8 5 ] D . A . T u r n e r , M i r a n d a : A n o n - s t r i c t
f u n c t i o n a l l a n g u a g e w i t h p o l y m o r p h i c
t y p e s . I n P r o c e e d i n g s o f t h e 2 ' n d I n t e r -
n a t i o n a l C o n f e r e n c e o n F u n c t i o n a l P r o -
g r a m m i n g L a n g u a g e s a n d C o m p u t e r A r -
c h i t e c t u r e , N a n c y , F r a n c e , S e p t e m b e r
1 9 8 5 . L N C S 2 0 1 , S p r i n g e r - V e r l a g , 1 9 8 5 .
W a n 8 7 ] M . W a n d , C o m p l e t e t y p e i n f e r e n c e f o r
s i m p l e o b j e c t s . I n P r o c e e d i n g s o f t h e S y m -
p o s i u m o n L o g i c i n C o m p u t e r S c i e n c e
I t h a c a , N Y , J u n e 1 9 8 7 . I E E E C o m p u t e r
S o c i e t y P r e s s , 1 9 8 7 .
1 7