CS2135 Programming Language Concepts
Exercises on Scoping

For each of the following expressions:

  1.  
          (lambda (x y)
            (+ ((lambda (y) (* y x)) 5)
               ((lambda (z) (+ y z)) 10)))
    

  2.  
          (define (f x)
            ((lambda (y) (+ x y))
             ((lambda (x) (* x y)) 3)))
    

  3.  
          (define (f g x y)
            (g (+ x y)))
    
          (f (lambda (x) y) 3 7)
    

  4.  
          (define (f x)
            (lambda (y) (+ x y z)))
    
          (f 7)
    

  5.  
          (define (f x)
            (lambda (y) (+ x y z)))
    
          ((f 7) 8)
    

  6.  
          (define (g z)
            (lambda (y) (+ y z)))
    
          (define (f x y)
            (cond [(= x 0) (lambda (y) (/ x y))]
                  [(= x 1) (lambda (y)
                             (lambda (z)
                               (* x y z)))]
                  [else (g 7)]))
    
          (f 8 9)
    


This page maintained by Kathi Fisler
Department of Computer Science Worcester Polytechnic Institute