Com Sci 221/321 --- Programming Languages
Assignment #7 --- Autumn 1999
Due Monday, 22 November
Last modified: Sun Nov 14 19:00:28 CST 1999
Com Sci 221 and 321
- Example 13.5 on pages 532-533 of the text shows a function
f
that produces different results under dynamic and
static scope rules. Write another pure functional program defining a
function that distinguishes the two scope rules, using only
lambda
, and no let
. You may redefine the
same function from the book, or design your own simpler example (e.g.,
without the multiplication). You may define your function
f
using define, but don't use additional
define
s within the definition of the function. Run your
program to demonstrate that Scheme has static scope. Do a
hand calculation for the same program from McCarthy's equations for
the eval
function in the pages of the LISP
manual that I copied for you. Show that the old fashioned
LISP had dynamic scope.
- Look at the weird
higher-order examples
that I did in Scheme. Translate them into ML and run
them, observing the types. Notice which Scheme definitions
fail in ML.
Com Sci 321 only
- Atomic symbols,
lambda
and function application are
sufficient to define everything in LISP. We don't really need
integers, lists, .... Redefine cons
, car
,
cdr
, the booleans T
and F
, and
the special form if
in terms of lambda
and
function application. Demonstrate your definitions on a few very
simple examples.