This assignment is due on May 12th.
Question 1 (4 points)
What will be printed by following Scheme-like program under the assumption that parameters are passed call-by-value, call-by-reference, and call-by-value-return?
(define (parameter-demo) (define a 1) (define (f b) (set! b (+ b 1)) (display "a = ")(display a) (display ", b = ")(display b) (newline) ) (f a) ) (parameter-demo)
Question 2 has been removed.
Question 3 (13 points)
Scheme provides the operations delay and force to support normal-order evaluation (or lazy evaluation). They are explained in section 6.4 of R5RS (on page 32). Explain the difference between call-by-name and normal-order evaluation as implemented by delay and force. Would it be possible to write Jensen's Device using delay and force?
Using delay and force it is possible to write a Y combinator in Scheme. Write one and demonstrate its use with the factorial function.
The first two of these questions are partly based on exercises out of Ellis Horowitz, ``Fundamentals of Programming Languages''.
Please submit everything in one email that includes all your answers in attachments. Multiple submission emails are permitted but then only the last one is considered.