Computer Science 3675
Fall 2015
Practice Questions for Quiz 5

  1. What is the difference between a strongly statically typed language and a weakly statically typed language?

    Answer

  2. What is the defining characteristic of a dynamically typed language?

    Answer

  3. Suppose that function f is defined by

    f(x, y) = (y, head(x))
    What is the most general polymorphic type of f? Use Greek letters for type variables.

    Answer

  4. Suppose that function f is defined by

    f(x, y, z) = x :: y :: z
    What is the most general polymorphic type of f? Use Greek letters for type variables.

    Answer

  5. Suppose that function f is defined by

    f x y = y x
    What is the most general polymorphic type of f? Use Greek letters for type variables. Notice that f is curried.

    Answer

  6. What is the value of each of the following Cinnameg expressions? (foldLtoR i f x) is a left-to-right fold with initial value i and function f on list x.

    1. map (x |-> x + 5) [2,4,6]. Answer

    2. map tail [[2,5], [4], [6,5,4]]. Answer

    3. foldLtoR 1 (+) [2,3,4,5]. Answer

  7. Function select is written so that (select p x) returns the first member m of list x such that p(m) is true. (For the purposes of this question, it will not matter what select does when there is no such m.) Notice that p is a predicate, a function that produces a boolean result. Predicate odd? returns true on an odd integer and false on an even integer. (The question mark is part of the name of function odd?.) For example, (select odd? [2,3,4,5,6]) = 3.

    1. What is the type of function odd? Answer

    2. What is the most general polymorphic type of function select? Keep in mind that select is curried. Answer

    3. What is the value of Cinnameg expression map (select odd?) [[2,3,4,5], [1,2,3,4], [2,4,6,7,8]]? Answer

  8. Given definition

       f x y = (x+1)::y.
    

    1. What kind of thing is x (a number, a list or a function)? Answer

    2. What kind of thing is y (a number, a list or a function)? Answer

    3. What kind of thing is f x y (a number, a list or a function)? Answer

    4. What kind of thing is f x (a number, a list or a function)? Answer

  9. You are given the following function definition.

        f x y z = y x (x::z)
    

    1. What kind of thing is parameter z? (A number, a list, a function, or something else)? Answer

    2. What kind of thing is parameter y? (A number, a list, a function, or something else)? Answer

    3. What kind of thing does expression f(2) yield? (A number, a list, a function, or something else? Is this expression allowed?) Answer

  10. By choosing among the operations foldLtoR, foldRtoL and map write a Cinnameg definition for each of the following that make direct use of recursion or loops.

    1. Write a definition of a function called doubleAll that takes a list x of numbers as its parameter and produces a list of the doubles numbers in list x as its result. For example, doubleAll([5,2,19,3]) = [10,4,38,6].

      Answer

    2. Write a definition of a function called product so that product(x) yields the product of all of the members of list x, where x is a list of numbers. (Product means multiply.)

      Answer