Computer Science 3675
Summer 2001
Practice questions for quiz 2
Write a clearly legible T to the left of each of the
following that is true, and a clearly legible F to the left
of each that is false.
Pattern matching can be used to bind names by solving
simple equations.
Sometimes a pattern match can fail.
In C++, every block begins at the start of a function,
and ends at the end of the function.
What is shadowing, and how can it occur? Give an example.
Given the definition
f([]) = []
f(h::t) = (h*h)::f(t) when h > 10
f(h::t) = f(t) when h <= 10
show an inside-out evaluation of expression f([4,12,15,6,11]).
Assume that arithmetic is done as soon as possible.
Write an equational definition of a function
called smallest so that smallest(n,x) is the smallest
member of list n::x. For example, smallest(3, [6,4,7]) = 3
and smallest(8, [2,5]) = 2.
You may presume that you
have a function called min that takes the minimum of two
numbers. For example, min(7,4) = 4.
In a purely functional language, is it ever possible to
compute the same expression twice in the same context and get different
values? For example, if E is an expression, and you compute
E two times, one right after another,
could the first computation yield a different result
from the second computation? Why or why not?