Ad Hoc Polymorphism

download Ad Hoc Polymorphism

of 17

Transcript of Ad Hoc Polymorphism

  • 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