bawden - quasi quotation in lisp

Upload: jblair33

Post on 09-Apr-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/7/2019 Bawden - Quasi Quotation in Lisp

    1/9

    Q u a s i q u o t a t i o n i n L i s p

    A l a n B a w d e n

    B r a n d e i s U n i v e r s i t y

    b a w d e n @ c s . b r a n d e i s . e d u

    A b s t r a c t

    Q u a s i q u o t a t i o n i s t h e t e c h n o l o g y c o m m o n l y u s e d i n

    L i s p t o w r i t e p r o g r a m - g e n e r a t i n g p r o g r a m s . I n t h i s

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

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

    p r a c t i c e .

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

    T h e s u b j e c t o f t h i s p a p e r i s \ q u a s i q u o t a t i o n " .

    Q u a s i q u o t a t i o n i s a p a r a m e t e r i z e d v e r s i o n o f o r d i -

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

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

    q u a s i q u o t a t i o n i s a \ t e m p l a t e " .

    Q u a s i q u o t a t i o n a p p e a r s i n v a r i o u s L i s p d i a l e c t s , i n -

    c l u d i n g S c h e m e 4 ] a n d C o m m o n L i s p 1 3 ] , w h e r e i t

    i s u s e d t o w r i t e s y n t a c t i c e x t e n s i o n s ( \ m a c r o s " ) a n d

    o t h e r p r o g r a m - g e n e r a t i n g p r o g r a m s .

    I h a v e t w o g o a l s i n t h i s p a p e r . F i r s t , I w i s h t o

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

    r e c o r d s o m e o f i t s h i s t o r y . S e c o n d , I w i s h t o d r a w

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

    q u a s i q u o t a t i o n a n d L i s p ' s \ S - e x p r e s s i o n " d a t a s t r u c -

    t u r e s .

    I n t h i s p a p e r w h e n I u s e t h e w o r d \ L i s p " I w i l l

    m e a n p r i m a r i l y t h e L i s p d i a l e c t s C o m m o n L i s p a n d

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

    m o s t o t h e r L i s p d i a l e c t s . W h e n I w r i t e e x a m p l e s o f

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

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

    a l e c t s .

    0

    2 W h y Q u a s i q u o t a t i o n ?

    B e f o r e l o o k i n g a t h o w y o u w o u l d u s e q u a s i q u o t a t i o n

    t o w r i t e p r o g r a m - g e n e r a t i n g p r o g r a m s i n L i s p , l e t u s

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

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

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

    w h a t a t r u l y u s e f u l a n d w e l l - i n t e g r a t e d q u a s i q u o t a -

    t i o n t e c h n o l o g y s h o u l d l o o k l i k e .

    2 . 1 Q u a s i q u o t a t i o n i n C

    S u p p o s e t h a t y o u a r e w r i t i n g a C p r o g r a m t h a t g e n -

    e r a t e s a n o t h e r C p r o g r a m . T h e m o s t s t r a i g h t f o r w a r d

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

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

    m a n i p u l a t i o n . Y o u r p r o g r a m w i l l p r o b a b l y c o n t a i n

    m a n y s t a t e m e n t s t h a t l o o k l i k e :

    f p r i n t f ( o u t , " f o r ( i = 0 ; i < % s ; i + + )

    % s i ] = % s ; \ n " ,

    a r r a y _ s i z e ,

    a r r a y _ n a m e ,

    i n i t _ v a l ) ;

    C ' s f p r i n t f p r o c e d u r e i s a c o n v e n i e n t w a y t o g e n e r -

    a t e t h e d e s i r e d C c o d e a n d t o s p e c i a l i z e i t a s r e q u i r e d .

    W i t h o u t f p r i n t f , y o u w o u l d h a v e h a d t o w r i t e :

    f p u t s ( " f o r ( i = 0 ; i < " , o u t ) ;

    f p u t s ( a r r a y _ s i z e , o u t ) ;

    f p u t s ( " ; i + + ) " , o u t ) ;

    f p u t s ( a r r a y _ n a m e , o u t ) ;

    f p u t s ( " i ] = " , o u t ) ;

    f p u t s ( i n i t _ v a l , o u t ) ;

    f p u t s ( " ; \ n " , o u t ) ;

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

    g e n e r a t e s a s y n t a c t i c a l l y l e g a l C s t a t e m e n t , b u t w h e n

    l o o k i n g a t t h e s e q u e n c e o f c a l l s t o f p u t s , t h i s i s n ' t a s

    c l e a r .

    U s i n g f p r i n t f a c h i e v e s t h e c e n t r a l g o a l o f

    q u a s i q u o t a t i o n : I t a s s i s t s y o u b y a l l o w i n g y o u t o w r i t e

  • 8/7/2019 Bawden - Quasi Quotation in Lisp

    2/9

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

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

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

    i n o r d e r t o p a r a m e t e r i z e i t .

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

    C p r o g r a m s t h a t g e n e r a t e C p r o g r a m s , t w o p r o b l e m s

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

    y o u h a v e u s e d i t f o r a w h i l e :

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

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

    o c c u r r e n c e s o f \ % s " t o g u r e o u t w h i c h m a t c h e s

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

    p a r a m e t e r s , e r r o r s w i l l o c c u r .

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

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

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

    g e n e r a t e d . A s a r e s u l t , u n u s u a l v a l u e s f o r a n y o f

    t h e p a r a m e t e r s c a n c h a n g e t h e m e a n i n g o f t h e r e -

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

    s i d e r w h a t h a p p e n s i f a r r a y _ n a m e w a s \ * x " :

    C ' s o p e r a t o r p r e c e d e n c e r u l e s c a u s e t h e r e s u l t -

    i n g c o d e t o b e p a r s e d a s \ * ( x i ] ) " r a t h e r t h a n

    t h e p r e s u m a b l y i n t e n d e d \ ( * x ) i ] " . )

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

    m o v i n g t h e p a r a m e t e r e x p r e s s i o n s i n t o t h e t e m p l a t e .

    Y o u w o u l d m u c h r a t h e r w r i t e s o m e t h i n g l i k e :

    s u b s t ( " f o r ( i = 0 ; i < $ a r r a y _ s i z e ; i + + )

    $ a r r a y _ n a m e i ] = $ i n i t _ v a l ; " ) ;

    B u t e v e n i f t h i s c o u l d b e m a d e t o w o r k i n C ,

    1

    y o u w i l l

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

    s t r i n g s a r e n o t r e a l l y a v e r y g o o d w a y t o r e p r e s e n t r e -

    c u r s i v e s t r u c t u r e s l i k e e x p r e s s i o n s . Y o u w i l l p r o b a b l y

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

    p a i r s o f p a r e n t h e s i s i n t o y o u r o u t p u t j u s t t o b e s u r e

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

    2

    W e h a v e i d e n t i e d t h r e e g o a l s f o r a s u c c e s s f u l i m -

    p l e m e n t a t i o n o f q u a s i q u o t a t i o n :

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

    t o w r i t e d o w n w h a t s h e w a n t s t h e o u t p u t t o l o o k

    l i k e , m o d i e d o n l y s l i g h t l y i n o r d e r t o p a r a m e -

    t e r i z e i t .

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

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

    w i l l b e i n s e r t e d .

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

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

    s e n t r e c u r s i v e l y d e n e d s t r u c t u r e s s u c h a s e x -

    p r e s s i o n s .

    1

    I c a n t h i n k o f s e v e r a l w a y s t o d o i t | n o n e o f t h e m v e r y

    p l e a s a n t .

    2

    A t e c h n i q u e o f t e n e m p l o y e d b y u s e r s o f t h e C p r e p r o c e s s o r

    f o r t h e v e r y s a m e r e a s o n .

    A s w e s h a l l s e e , t h e a c h i e v e m e n t o f t h a t l a s t g o a l i s

    w h e r e L i s p w i l l r e a l l y s h i n e .

    2 . 2 Q u a s i q u o t a t i o n i n L i s p

    N o w s u p p o s e t h a t y o u a r e w r i t i n g a L i s p p r o g r a m

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

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

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

    C c o d e i n t h e p r e v i o u s s e c t i o n d i d , o r e v e n t o w o r k

    w i t h t o k e n s , a s t h e C p r e p r o c e s s o r d o e s . T h e n a t u r a l

    w a y f o r a L i s p p r o g r a m t o g e n e r a t e L i s p c o d e i s f o r

    i t t o w o r k w i t h L i s p ' s \ S - e x p r e s s i o n " d a t a s t r u c t u r e s :

    l i s t s , s y m b o l s , n u m b e r s , e t c . S o s u p p o s e y o u r a i m i s

    t o g e n e r a t e a L i s p e x p r e s s i o n s u c h a s :

    ( d o ( ( i 0 ( + 1 i ) ) )

    ( ( > = i a r r a y - s i z e ) )

    ( v e c t o r - s e t ! a r r a y - n a m e

    i

    i n i t - v a l ) )

    T h e p r i m i t i v e L i s p c o d e t o c o n s t r u c t s u c h a n S -

    e x p r e s s i o n i s :

    ( l i s t ' d o ' ( ( i 0 ( + 1 i ) ) )

    ( l i s t ( l i s t ' > = ' i a r r a y - s i z e ) )

    ( l i s t ' v e c t o r - s e t ! a r r a y - n a m e

    ' i

    i n i t - v a l ) )

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

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

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

    f p r i n t f . B u t L i s p ' s q u a s i q u o t a t i o n f a c i l i t y w i l l l e t

    y o u w r i t e i n s t e a d :

    ` ( d o ( ( i 0 ( + 1 i ) ) )

    ( ( > = i , a r r a y - s i z e ) )

    ( v e c t o r - s e t ! , a r r a y - n a m e

    i

    , i n i t - v a l ) )

    A b a c k q u o t e c h a r a c t e r ( ) p r e c e d e s t h e e n t i r e t e m -

    p l a t e , a n d a c o m m a c h a r a c t e r ( , ) p r e c e d e s e a c h p a -

    r a m e t e r e x p r e s s i o n i n s i d e t h e t e m p l a t e . ( T h e c o m m a

    i s s o m e t i m e s d e s c r i b e d a s m e a n i n g \ u n q u o t e " b e -

    c a u s e i t t u r n s o t h e q u o t a t i o n t h a t b a c k q u o t e t u r n s

    o n . )

    I t i s c l e a r w h a t t h i s b a c k q u o t e n o t a t i o n i s t r y i n g t o

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

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

    T h e a n s w e r i s t h a t t h e t w o e x p r e s s i o n s a b o v e a r e

    a c t u a l l y i d e n t i c a l S - e x p r e s s i o n s ! T h a t i s , t h e y a r e

    i d e n t i c a l i n t h e s a m e s e n s e t h a t

    ( A B . ( C D E . ( ) ) )

  • 8/7/2019 Bawden - Quasi Quotation in Lisp

    3/9

    a n d

    ( A B C D E )

    a r e i d e n t i c a l . L i s p ' s S - e x p r e s s i o n p a r s e r ( t r a d i t i o n -

    a l l y c a l l e d \ r e a d " ) e x p a n d s a b a c k q u o t e f o l l o w e d b y

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

    S - e x p r e s s i o n . S o y o u c a n w r i t e :

    ` ( l e t ( ( , x ' , v ) ) , b o d y )

    a n d i t w i l l b e e x a c t l y a s i f y o u h a d w r i t t e n :

    ( l i s t ' l e t

    ( l i s t ( l i s t x ( l i s t ' q u o t e v ) ) )

    b o d y )

    B a c k q u o t e e x p r e s s i o n s a r e j u s t a h a n d y n o t a t i o n f o r

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

    s t r u c t o r s . T h e e x a c t e x p a n s i o n o f a b a c k q u o t e e x -

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

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

    3

    ( O n e p o s s i -

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

    S o t h e b a c k q u o t e n o t a t i o n d o e s n ' t c h a n g e t h e f a c t

    t h a t y o u r p r o g r a m - g e n e r a t i n g L i s p p r o g r a m w o r k s b y

    m a n i p u l a t i n g L i s p ' s l i s t s t r u c t u r e s .

    C l e a r l y t h i s b a c k q u o t e n o t a t i o n a c h i e v e s a t l e a s t

    t h e r s t t w o o f o u r t h r e e g o a l s f o r q u a s i q u o t a t i o n : t h e

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

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

    u e s w i l l b e i n s e r t e d .

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

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

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

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

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

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

    i s s t i l l p r e t t y l o w - l e v e l .

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

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

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

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

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

    d i e r e n t s y n t a c t i c c o n s t r u c t s i n o u r l a n g u a g e ( v a r i -

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

    A f t e r a b a n d o n i n g c h a r a c t e r s t r i n g s a s t o o l o w - l e v e l ,

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

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

    o f t h e f e a t u r e s o f t h e g i v e n d o m a i n .

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

    T h e p r o b l e m w i t h s t r i n g s w a s t h a t s t r i n g s u b s t i -

    t u t i o n d i d n ' t r e s p e c t t h e i n t e n d e d r e c u r s i v e s t r u c t u r e

    3

    A c t u a l l y , i n S c h e m e 4 ] , t h e e x a c t e x p a n s i o n i s s p e c i e d : i t

    e x p a n d s i n t o a s p e c i a l q u a s i q u o t e e x p r e s s i o n . B u t I h a v e n e v e r

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

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

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

    o f e x p r e s s i o n s r e p r e s e n t e d a s s t r i n g s . B u t l i s t s t r u c -

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

    o f e x p r e s s i o n s r e p r e s e n t e d a s l i s t s { a n d w e h a v e n ' t y e t

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

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

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

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

    a d d i t i o n a l c o m p l e x i t y i n t o t h e s y s t e m . T h e q u e s -

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

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

    n i e n t ?

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

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

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

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

    s y n t a x . T h i s a d d i t i o n a l s a f e t y m i g h t m a k e t h e a d d i -

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

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

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

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

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

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

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

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

    r e p r e s e n t a t i o n s f o r q u a s i q u o t a t i o n t o w o r k w i t h h a v e

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

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

    h i g h e r - l e v e l r e p r e s e n t a t i o n . A l l t h r e e o f o u r g o a l s f o r

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

    S - e x p r e s s i o n - b a s e d q u a s i q u o t a t i o n .

    2 . 3 S y n e r g y

    I n f a c t , t h e r e ' s a w o n d e r f u l s y n e r g y b e t w e e n

    q u a s i q u o t a t i o n a n d S - e x p r e s s i o n s . T h e y w o r k t o -

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

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

    A s w e s a w i n t h e l a s t s e c t i o n , L i s p c o d e t h a t c o n -

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

    L i s p ' s l i s t c o n s t r u c t i n g p r o c e d u r e s t e n d s t o b e e x -

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

    g r a m m e r s w i l l h a v e t r o u b l e s e e i n g w h a t t h i s d o e s :

    ( c o n s ' c o n d

    ( c o n s ( l i s t ( l i s t ' e q ?

    v a r

    ( l i s t ' q u o t e

    v a l ) )

    e x p r )

    m o r e - c l a u s e s ) )

    B u t e v e n a n o v i c e c a n s e e w h a t t h e e q u i v a l e n t

    q u a s i q u o t a t i o n d o e s :

    ` ( c o n d ( ( e q ? , v a r ' , v a l ) , e x p r )

    . , m o r e - c l a u s e s )

  • 8/7/2019 Bawden - Quasi Quotation in Lisp

    4/9

    S - e x p r e s s i o n s w e r e a t t h e c o r e o f M c C a r t h y ' s o r i g i -

    n a l v e r s i o n o f L i s p 6 ] . T h e a b i l i t y t o m a n i p u l a t e p r o -

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

    w h a t L i s p i s a l l a b o u t . B u t w i t h o u t q u a s i q u o t a t i o n ,

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

    Q u a s i q u o t a t i o n c o r r e c t s a n i m p o r t a n t i n a d e q u a c y i n

    L i s p ' s o r i g i n a l S - e x p r e s s i o n t o o l k i t .

    T h e b e n e t s o w t h e o t h e r w a y a s w e l l . A s w e ' v e

    s e e n , c h a r a c t e r s t r i n g b a s e d q u a s i q u o t a t i o n i s a n u n -

    t i d y w a y t o w o r k w i t h r e c u r s i v e d a t a s t r u c t u r e s s u c h

    a s e x p r e s s i o n s . B u t i f o u r d a t a i s r e p r e s e n t e d u s i n g S -

    e x p r e s s i o n s , s u b s t i t u t i o n i n q u a s i q u o t a t i o n t e m p l a t e s

    w o r k s c l e a n l y . S o S - e x p r e s s i o n s c o r r e c t a n i n a d e q u a c y

    i n s t r i n g - b a s e d q u a s i q u o t a t i o n .

    Q u a s i q u o t a t i o n a n d S - e x p r e s s i o n s c o m p e n s a t e f o r

    e a c h o t h e r ' s w e a k n e s s e s . T o g e t h e r t h e y f o r m a r e -

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

    u l a t i n g a n d g e n e r a t i n g p r o g r a m s . S o i t i s n o t s u r p r i s -

    i n g t h a t a l t h o u g h q u a s i q u o t a t i o n d i d n ' t b e c o m e a n

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

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

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

    3 E m b e l l i s h m e n t s

    N o w t h a t t h e r e a d e r i s c o n v i n c e d t h a t q u a s i q u o t a t i o n

    i n L i s p i s a n i m p o r t a n t i d e a , w e c a n p r o c e e d t o l l i n

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

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

    s e n t e d . F i r s t , w e n e e d t o i n t r o d u c e a n a d d i t i o n a l f e a -

    t u r e , c a l l e d \ s p l i c i n g " . S e c o n d , w e n e e d t o t a k e a l o o k

    a t w h a t h a p p e n s w h e n q u a s i q u o t a t i o n s a r e n e s t e d .

    3 . 1 S p l i c i n g

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

    o u s e x a m p l e . R e c a l l :

    ` ( c o n d ( ( e q ? , v a r ' , v a l ) , e x p r )

    . , m o r e - c l a u s e s )

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

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

    t h e c o n d - e x p r e s s i o n w e a r e c o n s t r u c t i n g . S u p p o s e w e

    k n e w ( f o r s o m e r e a s o n ) t h a t t h a t l i s t d i d n o t i n c l u d e

    a n e l s e - c l a u s e , a n d w e w a n t e d t o s u p p l y o n e . W e

    c a n a l w a y s w r i t e :

    ` ( c o n d ( ( e q ? , v a r ' , v a l ) , e x p r )

    . , ( a p p e n d m o r e - c l a u s e s

    ' ( ( e l s e # T ) ) ) )

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

    q u a s i q u o t a t i o n i s s u p p o s e d t o h e l p u s a v o i d .

    T h e b a c k q u o t e n o t a t i o n s e e m s t o s u g g e s t t h a t w e

    s h o u l d b e a b l e t o w r i t e i n s t e a d :

    ` ( c o n d ( ( e q ? , v a r ' , v a l ) , e x p r )

    . , m o r e - c l a u s e s

    ( e l s e # T ) )

    U n f o r t u n a t e l y , t h i s a b u s e o f L i s p ' s \ d o t n o t a t i o n " w i l l

    b e r e j e c t e d b y t h e L i s p p a r s e r , r e a d . F o r t u n a t e l y ,

    t h i s i s a c o m m o n e n o u g h t h i n g t o w a n t t o d o t h a t

    t h e b a c k q u o t e n o t a t i o n a l l o w s u s t o a c h i e v e o u r g o a l

    b y w r i t i n g :

    ` ( c o n d ( ( e q ? , v a r ' , v a l ) , e x p r )

    , @ m o r e - c l a u s e s

    ( e l s e # T ) )

    T h i s n e w t w o - c h a r a c t e r p r e x , c o m m a - a t s i g n ( , @ ) , i s

    s i m i l a r t o t h e p l a i n c o m m a p r e x , e x c e p t t h e f o l l o w -

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

    \ s p l i c e d " i n t o t h e c o n t a i n i n g l i s t .

    4

    T h e e x p a n d e d c o d e m i g h t r e a d :

    ( c o n s ' c o n d

    ( c o n s ( l i s t ( l i s t ' e q ?

    v a r

    ( l i s t ' q u o t e

    v a l ) )

    e x p r )

    ( a p p e n d m o r e - c l a u s e s

    ' ( ( e l s e # T ) ) ) ) )

    T h e r e a d e r w h o n d s t h i s e x p a n s i o n u n e n l i g h t e n i n g

    h a s m y s y m p a t h y . A s i m p l e e x a m p l e s h o u l d m a k e

    e v e r y t h i n g c l e a r : I f t h e v a l u e o f X i s ( 1 2 3 ) , t h e n

    t h e v a l u e o f

    ` ( n o r m a l = , X s p l i c i n g = , @ X s e e ? )

    i s

    ( n o r m a l = ( 1 2 3 ) s p l i c i n g = 1 2 3 s e e ? )

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

    a t t h e B N F f o r a n y L i s p d i a l e c t w i l l r e v e a l m a n y k i n d s

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

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

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

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

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

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

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

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

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

    q u a s i q u o t a t i o n . )

    4

    G i v e n t h e e x a m p l e , t h e r e a d e r m a y w e l l w o n d e r w h y t h e

    p r e x c o m m a - p e r i o d ( , . ) w a s n ' t c h o s e n i n s t e a d . T h e h i s t o r y

    s e c t i o n w i l l a d d r e s s t h i s q u e s t i o n !

  • 8/7/2019 Bawden - Quasi Quotation in Lisp

    5/9

  • 8/7/2019 Bawden - Quasi Quotation in Lisp

    6/9

    , X X i t s e l f w i l l a p p e a r a s a n e x p r e s s i o n i n t h e i n -

    t e r m e d i a t e q u a s i q u o t a t i o n a n d i t s v a l u e w i l l

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

    , , X T h e v a l u e o f X w i l l a p p e a r a s a n e x p r e s s i o n

    i n t h e i n t e r m e d i a t e q u a s i q u o t a t i o n a n d t h e

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

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

    , ' , X T h e v a l u e o f X w i l l a p p e a r a s a c o n s t a n t

    i n t h e i n t e r m e d i a t e q u a s i q u o t a t i o n a n d w i l l

    t h u s a p p e a r u n c h a n g e d i n t h e n a l r e s u l t .

    3 . 3 N e s t e d S p l i c i n g

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

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

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

    , @ , X , , , @ X , , @ , @ X a n d , @ ' , X w i l l o c c a s i o n a l l y p r o v e

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

    f o l l o w i n g t w o c a s e s :

    , @ , X T h e v a l u e o f X w i l l a p p e a r a s a n e x p r e s s i o n

    i n t h e i n t e r m e d i a t e q u a s i q u o t a t i o n a n d t h e

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

    t h e n a l r e s u l t .

    , , @ X T h e v a l u e o f X w i l l a p p e a r a s a l i s t o f e x -

    p r e s s i o n s i n t h e i n t e r m e d i a t e q u a s i q u o t a -

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

    s i o n s w i l l b e s u b s t i t u t e d i n t o t h e n a l r e s u l t .

    I n t u i t i v e l y , a n a t s i g n h a s t h e e e c t o f c a u s i n g t h e

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

    o f t h e f o l l o w i n g e x p r e s s i o n .

    M a k i n g n e s t e d s p l i c i n g w o r k p r o p e r l y i n a l l c a s e s

    i s d i c u l t . T h e e x p a n d e r i n a p p e n d i x A g e t s i t r i g h t ,

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

    4 H i s t o r y

    T h e n a m e \ Q u a s i - Q u o t a t i o n " w a s c o i n e d b y W . V .

    Q u i n e 1 0 ] a r o u n d 1 9 4 0 . Q u i n e ' s v e r s i o n o f q u a s i q u o -

    t a t i o n w a s c h a r a c t e r s t r i n g b a s e d . H e h a d n o e x -

    p l i c i t m a r k e r f o r \ u n q u o t e " , i n s t e a d a n y G r e e k l e t t e r

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

    q u a s i q u o t a t i o n t o c o n s t r u c t e x p r e s s i o n s f r o m m a t h e -

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

    e x p e r i e n c e r e p r e s e n t i n g e x p r e s s i o n s f r o m C , h e w a s

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

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

    S - e x p r e s s i o n s i n s t e a d ! )

    M c C a r t h y d e v e l o p e d L i s p a n d S - e x p r e s s i o n s 6 ]

    a r o u n d 1 9 6 0 , b u t h e d i d n o t p r o p o s e a n y f o r m o f S -

    e x p r e s s i o n b a s e d q u a s i q u o t a t i o n .

    7

    7

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

    D u r i n g 1 9 6 0 s a n d 1 9 7 0 s t h e a r t i c i a l i n t e l l i g e n c e

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

    l e a r n i n g h o w t o p r o g r a m w i t h S - e x p r e s s i o n s a n d l i s t

    s t r u c t u r e . M a n y o f t h e A I p r o g r a m s f r o m t h o s e

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

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

    i n s t a n t i a t i o n i n w a y s t h a t a r e c o n n e c t e d t o t o d a y ' s

    S - e x p r e s s i o n q u a s i q u o t a t i o n t e c h n o l o g y . I n p a r t i c u -

    l a r , t h e n o t i o n o f s p l i c i n g , d e s c r i b e d i n s e c t i o n 3 . 1 , i s

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

    B u t n o t h i n g f r o m t h o s e y e a r s r e s e m b l e s t o d a y ' s

    L i s p q u a s i q u o t a t i o n n o t a t i o n a s c l o s e l y a s t h e n o t a -

    t i o n i n M c D e r m o t t a n d S u s s m a n ' s C o n n i v e r l a n g u a g e

    7 ] . I n C o n n i v e r ' s n o t a t i o n ` X , , X a n d , @ X w e r e w r i t -

    t e n ! " X , @ X a n d ! @ X r e s p e c t i v e l y , b u t t h e i d e a w a s

    b a s i c a l l y t h e s a m e . ( C o n n i v e r a l s o h a d a , X c o n s t r u c t

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

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

    t o l l i t s c u r r e n t r o l e . )

    T h e C o n n i v e r M a n u a l c r e d i t s t h e M D L l a n g u a g e

    3 ] f o r i n s p i r i n g s o m e o f C o n n i v e r ' s f e a t u r e s . M D L ' s

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

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

    c a l l i t a d i r e c t a n c e s t o r o f t o d a y ' s q u a s i q u o t e . I ' l l

    h a v e m o r e t o s a y a b o u t t h i s i s s u e i n s e c t i o n 5 . 1 .

    A f t e r C o n n i v e r , q u a s i q u o t e e n t e r e d t h e L i s p p r o -

    g r a m m e r ' s t o o l k i t . B y t h e m i d - 1 9 7 0 s m a n y L i s p p r o -

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

    q u a s i q u o t e | i t w a s n ' t y e t b u i l t i n t o a n y L i s p d i a l e c t .

    M y p e r s o n a l k n o w l e d g e o f t h i s h i s t o r y s t a r t s i n

    1 9 7 7 w h e n I s t a r t e d p r o g r a m m i n g f o r t h e L i s p M a -

    c h i n e p r o j e c t a t M I T . A t t h a t t i m e q u a s i q u o t a t i o n

    w a s p a r t o f t h e L i s p M a c h i n e s y s t e m . T h e n o t a -

    t i o n w a s a l m o s t t h e s a m e a s t h e m o d e r n n o t a t i o n ,

    e x c e p t t h a t , , X w a s b e i n g u s e d i n s t e a d o f , @ X t o i n -

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

    n e s t e d q u a s i q u o t a t i o n , b u t t h i s d i d n ' t b o t h e r a n y -

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

    q u a s i q u o t a t i o n d i d n o t \ w o r k r i g h t " .

    I s e t o u t t o g u r e o u t w h y n e s t e d q u a s i q u o t a t i o n

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

    p r o c e s s I o u t l i n e d a b o v e i n s e c t i o n 3 . 2 , I d e v e l o p e d

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

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

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

    q u a s i q u o t a t i o n d o w h a t t h e y w a n t e d , n o t t h a t t h e r e

    w a s a x a b l e b u g .

    8

    N o w t h a t w e k n e w t h a t n e s t e d q u a s i q u o t a t i o n d i d

    i n f a c t w o r k , w e w a n t e d t o s t a r t u s i n g i t , a n d s o a

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

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

    L i s p w o u l d h a v e b e e n l i k e i f h e h a d a l s o t r i e d t o w o r k q u a s i q u o -

    t a t i o n i n t o t h e m i x t u r e !

    8

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

    n e s t e d s p l i c i n g | b u t I d i d n ' t n o t i c e t h a t .

  • 8/7/2019 Bawden - Quasi Quotation in Lisp

    7/9

    , . X b e c a u s e . , X a l r e a d y d o e s a k i n d o f s p l i c i n g ( s e e

    s e c t i o n 3 . 1 ) . I t h o u g h t t h a t t h i s w o u l d b e a g o o d

    p u n . O t h e r m e m b e r s o f t h e g r o u p t h o u g h t i t m i g h t

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

    t h o s e d a y s w a s u s i n g j u s t @ X t o i n d i c a t e s p l i c i n g 1 4 ] ,

    w e n a l l y d e c i d e d o n , @ X 1 5 ] .

    9

    M e a n w h i l e M c D e r m o t t a l t e r e d t h e C o n n i v e r n o t a -

    t i o n s l i g h t l y b y c h a n g i n g ! " X t o | " X . I n t h i s f o r m i t

    a p p e a r e d i n 1 ] i n 1 9 8 0 .

    A s f a r a s I k n o w , t h e p r o b l e m s o f n e s t e d s p l i c i n g

    d i d n ' t g e t w o r k e d o u t u n t i l 1 9 8 2 . I n J a n u a r y o f t h a t

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

    t a t i o n s n e s t e d t h r e e l e v e l s d e e p . H e r e m a r k e d t h a t

    , ' , ' , X w a s \ f a i r l y o b v i o u s " , b u t t h a t i t t o o k h i m

    \ a f e w t r i e s " t o g e t h i s u s e o f , , @ X r i g h t 1 2 ] . I r e -

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

    I o b s e r v e d t h a t i n o r d e r t o g e t n e s t e d s p l i c i n g c o r -

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

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

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

    o b s e r v a t i o n n o w a p p e a r s i n 1 3 ] .

    S o m e t i m e d u r i n g t h e 1 9 8 0 s w e s t a r t e d t o s p e l l

    \ q u a s i - q u o t e " w i t h o u t t h e h y p h e n . M y g u e s s i s t h a t

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

    n a m e d \ q u a s i q u o t e " i n t o S c h e m e .

    B y t h e e n d o f t h e 1 9 8 0 s , t h e s t a n d a r d s f o r C o m m o n

    L i s p 1 3 ] a n d S c h e m e 4 ] h a d a d o p t e d t h e m o d e r n

    q u a s i q u o t e n o t a t i o n .

    5 R e l a t e d I d e a s

    H e r e a r e t h r e e i d e a s r e l a t e d t o q u a s i q u o t a t i o n t h a t I

    t h i n k t h e r e a d e r m i g h t b e i n t e r e s t e d i n .

    5 . 1 A l t e r n a t e v i e w s o f q u o t a t i o n

    T h e b a c k q u o t e n o t a t i o n f o r q u a s i q u o t a t i o n ( ` X ) i s

    c l e a r l y i n s p i r e d b y L i s p ' s \ f o r w a r d q u o t e " n o t a t i o n

    f o r o r d i n a r y q u o t a t i o n ( ' X ) . W h i l e t h e b a c k q u o t e n o -

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

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

    q u o t e n o t a t i o n i s a n a b b r e v i a t i o n f o r a s i m p l e q u o t e

    e x p r e s s i o n . ( I . e . , ' X i s t h e s a m e a s ( q u o t e X ) . ) M c -

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

    f o r r e p r e s e n t i n g t h e c o n s t a n t s t h a t a p p e a r e d i n h i s

    M - e x p r e s s i o n l a n g u a g e 6 ] .

    S m i t h 1 1 ] a n d M u l l e r 8 ] h a v e b o t h a r g u e d t h a t

    t h a t t h e r e i s s o m e t h i n g s u s p e c t a b o u t M c C a r t h y ' s

    q u o t e . B o t h a r e w o r r i e d t h a t q u o t e s o m e h o w c o n -

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

    9

    W h e n q u a s i q u o t a t i o n w a s m i g r a t e d t o M a c L i s p 9 ] , . X w a s

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

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

    C o m m o n L i s p 1 3 ] .

    w o u l d l i k e t o r e p l a c e L i s p ' s e v a l f u n c t i o n w i t h s o m e -

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

    m a l i z a t i o n .

    N o w g i v e n t h a t a b a c k q u o t e f o l l o w e d b y a n e x -

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

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

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

    s a m e c o n c e r n s a b o u t b a c k q u o t e . S o i t i s i n t e r e s t i n g

    t h a t b o t h S m i t h ' s 2 - L I S P a n d M u l l e r ' s M - L I S P r e -

    s e m b l e t h e M D L l a n g u a g e 3 ] i n t h a t e x p r e s s i o n s a r e

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

    a r e ( i n s o m e s e n s e ) i m p l i c i t l y q u a s i q u o t a t i o n s . E . g .

    a n e x p r e s s i o n l i k e

    < c d r ( X < + 2 3 > Z ) >

    r e t u r n s

    ( 5 Z )

    T h i s i s w h y I w o u l d d e n y M D L ' s d i r e c t a n c e s t r y ,

    v i a C o n n i v e r , o f m o d e r n L i s p q u a s i q u o t a t i o n . M D L

    a n d C o n n i v e r w e r e w a n d e r i n g a r o u n d i n t h e d a r k

    l o o k i n g f o r c o n v e n i e n t w a y s t o c o n s t r u c t l i s t s t r u c -

    t u r e . B o t h f o u n d s o l u t i o n s , a n d C o n n i v e r m a y e v e n

    h a v e t h o u g h t t h a t i t w a s f o l l o w i n g M D L . B u t i n t h e

    l i g h t o f h i n d s i g h t , w e c a n r e c o g n i z e t h a t C o n n i v e r w a s

    r m l y o n t h e t r a d i t i o n a l L i s p p a t h , w h i l e M D L h a d

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

    s u g g e s t e d b y S m i t h a n d M u l l e r .

    5 . 2 P a r a m e t e r i z e d c o d e

    T h e ` C l a n g u a g e 2 ] a d d s a b a c k q u o t e o p e r a t o r t o o r -

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

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

    i n s p i r e d b y L i s p ' s u s e o f b a c k q u o t e , d o n o t c o n s t r u c t

    o r d i n a r y C d a t a s t r u c t u r e s ( s u c h a s s t r u c t u r e s a n d

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

    i s n o t s u r p r i s i n g s i n c e C h a s n o o r d i n a r y d a t a s t r u c -

    t u r e s f o r r e p r e s e n t i n g C p r o g r a m s ( o t h e r t h a n c h a r -

    a c t e r s t r i n g s ) . I n s i d e a b a c k q u o t e , a t s i g n ( @ ) i s u s e d

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

    o b j e c t . S p l i c i n g i s m e a n i n g l e s s a n d b a c k q u o t e s d o n o t

    n e s t .

    A p a r t i c u l a r l y i n t e r e s t i n g d i e r e n c e f r o m L i s p ' s

    q u a s i q u o t a t i o n i s t h a t i n ` C b a c k q u o t e d c o d e c a n

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

    I . e . , d y n a m i c c o d e o b j e c t s a r e a l s o c l o s u r e s . S o a

    ` C b a c k q u o t e e x p r e s s i o n i s s o r t o f a c r o s s b e t w e e n a

    q u a s i q u o t a t i o n a n d a - e x p r e s s i o n .

    T h i s i s s i m i l a r t o L a m p i n g ' s s y s t e m o f p a r a m e t e r -

    i z a t i o n 5 ] . H i s d a t a - e x p r e s s i o n s s p e c i f y p a r a m e t e r -

    i z e d o b j e c t s t h a t a r e s o r t o f c r o s s b e t w e e n a q u a s i q u o -

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

    s i r e t o m a n i p u l a t e e x p r e s s i o n s t h e w a y t h a t q u a s i q u o -

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

    f r o m t h e c o n t e x t t h a t t h e y c a m e f r o m .

  • 8/7/2019 Bawden - Quasi Quotation in Lisp

    8/9

    S y s t e m s l i k e t h e s e d e m o n s t r a t e t h a t t h e r e i s a l o t

    o f u n e x p l o r e d t e r r i t o r y i n b e t w e e n t h e n o t i o n o f d a t a

    a n d t h e n o t i o n o f e x p r e s s i o n .

    5 . 3 S e l f - g e n e r a t i o n

    N o p a p e r o n q u a s i q u o t a t i o n i n L i s p w o u l d b e c o m -

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

    t o t h e p e r e n n i a l p r o b l e m o f w r i t i n g a L i s p e x p r e s -

    s i o n w h o s e v a l u e i s i t s e l f . T h e q u a s i q u o t e n o t a t i o n

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

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

    p e r s o n a l f a v o r i t e :

    ( l e t ( ( l e t ' ` ( l e t ( ( l e t ' , l e t ) )

    , l e t ) ) )

    ` ( l e t ( ( l e t ' , l e t ) )

    , l e t ) )

    6 C o n c l u s i o n

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

    i t , b u t t h e r e ' s a s y n e r g y b e t w e e n q u a s i q u o t a t i o n a n d

    S - e x p r e s s i o n s .

    A c k n o w l e d g m e n t s

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

    e l e c t r o n i c m a i l c o n v e r s a t i o n s I h a d i n 1 9 8 2 , o n e w i t h

    D r e w M c D e r m o t t a n d o n e w i t h G u y S t e e l e . W h i l e

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

    s i o n s w i t h R o b e r t M u l l e r , B r i a n C . S m i t h , G e r a l d J a y

    S u s s m a n , J o h n L a m p i n g , G l e n n B u r k e a n d J o n a t h a n

    B a c h r a c h . I t w a s O l i v i e r D a n v y w h o t h o u g h t t h a t

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

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

    d r a f t s . P a n d o r a B e r m a n a l s o a s s i s t e d i n t h e p r e p a r a -

    t i o n o f t h i s p a p e r .

    R e f e r e n c e s

    1 ] E . C h a r n i a k , C . K . R i e s b e c k , a n d D . V . M c -

    d e r m o t t . A r t i c i a l I n t e l l i g e n c e P r o g r a m m i n g .

    L a w r e n c e E r l b a u m A s s o c . , H i l l s d a l e , N J , r s t

    e d i t i o n , 1 9 8 0 .

    2 ] D . R . E n g l e r , W . C . H s i e h , a n d M . F . K a a s h o e k .

    ` C : A l a n g u a g e f o r f a s t , e c i e n t , h i g h - l e v e l d y -

    n a m i c c o d e g e n e r a t i o n . I n P r o c . 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 C M ,

    J a n . 1 9 9 6 .

    3 ] S . W . G a l l e y a n d G . P s t e r . T h e M D L p r o g r a m -

    m i n g l a n g u a g e . T R 2 9 3 , M I T L C S , M a y 1 9 7 9 .

    4 ] R . K e l s e y , W . C l i n g e r , a n d J . R e e s . R e v i s e d

    5

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

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

    t i o n , 1 1 ( 1 ) : 7 { 1 0 5 , 1 9 9 8 . A l s o a p p e a r s i n A C M

    S I G P L A N N o t i c e s 3 3 ( 9 ) , S e p t e m b e r 1 9 9 8 .

    5 ] J . L a m p i n g . A u n i e d s y s t e m o f p a r a m e t e r i z a -

    t i o n f o r p r o g r a m m i n g l a n g u a g e s . I n P r o c . 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 ,

    p a g e s 3 1 6 { 3 2 6 . A C M , J u l y 1 9 8 8 .

    6 ] J . M c C a r t h y . L I S P 1 . 5 P r o g r a m m e r ' s M a n u a l .

    M I T P r e s s , 1 9 6 2 .

    7 ] D . V . M c D e r m o t t a n d G . J . S u s s m a n . T h e C o n -

    n i v e r r e f e r e n c e m a n u a l . M e m o 2 5 9 a , M I T A I

    L a b , M a y 1 9 7 2 .

    8 ] R . M u l l e r . M - L I S P : A r e p r e s e n t a t i o n - i n d e p e n -

    d e n t d i a l e c t o f L I S P w i t h r e d u c t i o n s e m a n t i c s .

    A C M T r a n s a c t i o n s o n P r o g r a m m i n g L a n g u a g e s

    a n d S y s t e m s , 1 4 ( 4 ) : 5 8 9 { 6 1 6 , O c t . 1 9 9 2 .

    9 ] K . M . P i t m a n . T h e r e v i s e d M a c L i s p m a n u a l . T R

    2 9 5 , M I T L C S , M a y 1 9 8 3 .

    1 0 ] W . V . Q u i n e . M a t h e m a t i c a l L o g i c . H a r v a r d U n i -

    v e r s i t y P r e s s , r e v i s e d e d i t i o n , 1 9 8 1 .

    1 1 ] B . C . S m i t h . R e e c t i o n a n d s e m a n t i c s i n L i s p . I n

    P r o c . 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 , p a g e s 2 3 { 3 5 . A C M , J a n . 1 9 8 4 .

    1 2 ] G . L . S t e e l e J r . , J a n . 1 9 8 2 . E l e c t r o n i c m a i l m e s -

    s a g e .

    1 3 ] G . L . S t e e l e J r . C o m m o n L I S P : T h e L a n g u a g e .

    D i g i t a l P r e s s , s e c o n d e d i t i o n , 1 9 9 0 .

    1 4 ] G . L . S t e e l e J r . a n d G . J . S u s s m a n . T h e r e v i s e d

    r e p o r t o n S C H E M E : A d i a l e c t o f L i s p . M e m o

    4 5 2 , M I T A I L a b , J a n . 1 9 7 8 .

    1 5 ] D . W e i n r e b a n d D . M o o n . L i s p M a c h i n e M a n u a l .

    S y m b o l i c s I n c . , J u l y 1 9 8 1 .

  • 8/7/2019 Bawden - Quasi Quotation in Lisp

    9/9

    A E x p a n s i o n A l g o r i t h m

    T h i s a p p e n d i x c o n t a i n s a c o r r e c t S - e x p r e s s i o n

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

    I a s s u m e t h a t s o m e m o r e p r i m i t i v e L i s p p a r s e r

    h a s a l r e a d y r e a d i n t h e q u a s i q u o t a t i o n t o b e e x -

    p a n d e d , a n d h a s s o m e h o w t a g g e d a l l t h e q u a s i q u o -

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

    t h e f o l l o w i n g f o u r f u n c t i o n s :

    t a g - b a c k q u o t e ? T h i s p r e d i c a t e s h o u l d b e t r u e o f t h e

    r e s u l t o f r e a d i n g a b a c k q u o t e ( ) f o l l o w e d b y a n

    S - e x p r e s s i o n .

    t a g - c o m m a ? T h i s p r e d i c a t e s h o u l d b e t r u e o f t h e r e -

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

    e x p r e s s i o n .

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

    t h e r e s u l t o f r e a d i n g a c o m m a - a t s i g n ( , @ ) f o l -

    l o w e d b y a n S - e x p r e s s i o n .

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

    j e c t t h a t s a t i s e s o n e o f t h e p r e v i o u s t h r e e p r e d -

    i c a t e s . I t w i l l r e t u r n t h e S - e x p r e s s i o n t h a t f o l -

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

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

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

    m e d i a t e l y f o l l o w e d a b a c k q u o t e c h a r a c t e r . ( I . e . , t h e

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

    q q - e x p a n d i s c a l l e d . )

    ( d e f i n e ( q q - e x p a n d x )

    ( c o n d ( ( t a g - c o m m a ? x )

    ( t a g - d a t a x ) )

    ( ( t a g - c o m m a - a t s i g n ? x )

    ( e r r o r " I l l e g a l " ) )

    ( ( t a g - b a c k q u o t e ? x )

    ( q q - e x p a n d

    ( q q - e x p a n d ( t a g - d a t a x ) ) ) )

    ( ( p a i r ? x )

    ` ( a p p e n d

    , ( q q - e x p a n d - l i s t ( c a r x ) )

    , ( q q - e x p a n d ( c d r x ) ) ) )

    ( e l s e ` ' , x ) ) )

    N o t e t h a t a n y e m b e d d e d q u a s i q u o t a t i o n s e n c o u n -

    t e r e d b y q q - e x p a n d a r e r e c u r s i v e l y e x p a n d e d , a n d

    t h e e x p a n s i o n i s t h e n p r o c e s s e d a s i f i t h a d b e e n e n -

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

    q q - e x p a n d - l i s t i s c a l l e d t o e x p a n d t h o s e p a r t s o f

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

    l e g a l t o u s e s p l i c i n g . I t i s v e r y s i m i l a r t o q q - e x p a n d ,

    e x c e p t t h a t w h e r e q q - e x p a n d c o n s t r u c t s c o d e t h a t r e -

    t u r n s a v a l u e , q q - e x p a n d - l i s t c o n s t r u c t s c o d e t h a t

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

    ( d e f i n e ( q q - e x p a n d - l i s t x )

    ( c o n d ( ( t a g - c o m m a ? x )

    ` ( l i s t , ( t a g - d a t a x ) ) )

    ( ( t a g - c o m m a - a t s i g n ? x )

    ( t a g - d a t a x ) )

    ( ( t a g - b a c k q u o t e ? x )

    ( q q - e x p a n d - l i s t

    ( q q - e x p a n d ( t a g - d a t a x ) ) ) )

    ( ( p a i r ? x )

    ` ( l i s t

    ( a p p e n d

    , ( q q - e x p a n d - l i s t ( c a r x ) )

    , ( q q - e x p a n d ( c d r x ) ) ) ) )

    ( e l s e ` ' ( , x ) ) ) )

    C o d e c r e a t e d b y q q - e x p a n d a n d q q - e x p a n d - l i s t

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

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

    i n o r d e r t o m a k e n e s t e d q u a s i q u o t a t i o n s c o n t a i n i n g

    s p l i c i n g w o r k p r o p e r l y .

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

    I n a r e a l L i s p i m p l e m e n t a t i o n , s o m e o p t i m i z a t i o n

    w o u l d n e e d t o b e d o n e . B u t c a r e m u s t b e t a k e n n o t

    t o p e r f o r m a n y o p t i m i z a t i o n s t h a t a l t e r t h e b e h a v i o r

    o f n e s t e d s p l i c i n g .

    A p r o p e r l y o p t i m i z i n g q u a s i q u o t a t i o n e x p a n d e r f o r

    C o m m o n L i s p c a n b e f o u n d i n 1 3 , A p p e n d i x C ] . I

    a m n o t a w a r e o f t h e e x i s t e n c e o f a c o r r e c t o p t i m i z -

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

    t h e S c h e m e i m p l e m e n t a t i o n s t h a t I t e s t e d i m p l e m e n t

    n e s t e d s p l i c i n g c o r r e c t l y . )