Due: Friday, February 1st, 2013, noon
Just like part 1 of homework 3, add multiple argument functions, but this time add them to the interpreter with deferred substitutions.
Add if0, a conditional expression. It has three subexpressions:
<FnWAE> = ...
| {if0 FnWAE FnWAE FnWAE}Evaluating an if0 expression evaluates the first subexpression; if it produces 0, then the result of the entire expression is the result of the second subexpression. Otherwise, the result is the result of the third subexpression.
Examples:
(test (interp-expr (parse '{if0 0 1 2}) '()) 1)
(test (interp-expr (parse '{if0 1 2 3}) '()) 3)Implement, in the FnWAE language (without any extensions), a predicate neg? that determines if an integer is negative.
{deffun {neg? x} ...}It must return either 0 (if the input is negative), or 1 (if not).
Implement, in the FnWAE language (without any extensions), a function mult that computes the product of two integers.
{deffun {mult x y} ...}The final program you handin should:
(define mult-and-neg-deffuns
(list `{deffun {neg? x} ...}
`{deffun {mult x y} ...}
;; other deffuns okay, too
))| Last update: Friday, January 25th, 2013robby@eecs.northwestern.edu |