# 辅导案例-COMP0020

Functional Programming, COMP0020 (A6U, A7P)
Main Summer Exam Period
Suitable for Cohorts: 2019/20, 2018/19, 2017/18
This alternative assessment consists of TWO questions. Answer ALL QUESTIONS. Students
should submit typed answers where possible, though it is recognized that scanned handwritten
answers may be necessary for some students.
Marks for each part of each question are indicated in square brackets.
Standard calculators are permitted.
COMP0020 1 TURN OVER
Alternative assessment, 2019/20
1. Consider the following Miranda function definitions that represent natural numbers as
functions:
zero f x = x
one f x = f x
two f x = f (f x)
a. Give a Miranda definition for a function called “plus” that takes two functions rep-
resenting numbers and returns a function representation of the result of adding the
numbers. For example, the application “plus one one” should return a function that
acts exactly like the function “two”.
[3 marks]
b. Give a Miranda definition for a function called “times” that takes two functions rep-
resenting numbers and returns a function representation of the result of multiplying
the numbers. For example, the application “times one two” should return a function
that acts exactly like the function “two”.
[8 marks]
c. In the context of the above functions, explain what the following function does:
f9 n = g
where
g f x = n p q r
where
p g h = h (g f)
q u = x
r u = u
[5 marks]
[Total for Question 1: 16 marks]
COMP0020 2 CONTINUED
2. Consider the following problem: a man is taking a dog, a chicken and some grain to
market. The man must cross a river using a small boat that can take the man and at most
one item (either the dog, the chicken or the grain). The dog must never be left alone with
the chicken, and the chicken must never be left alone with the grain. The man must find a
sequence of trips in the boat (either travelling “to the market” or “away from the market”)
that successfully gets him, the dog, the chicken and the grain across the river.
You are asked to write Miranda code, including type definitions, as described below. You
are NOT expected to have access to the Miranda system and therefore you will not be
penalised for code with minor syntax or type errors. Your code will however otherwise
be marked on correctness, completeness, coherence, elegance, clarity, understandability,
brevity, and use of functional programming style. You must include instructive comments
Your code should effectively model the above problem, generate candidate solutions (each
being a possible sequence of trips), search candidate solutions and select a valid solution
where (i) the dog is not left alone with the chicken, (ii) the chicken is not left alone with
the grain, and (iii) the final position has the man, the dog, the chicken and the grain on
the far bank of the river.
[84 marks]
[Total for Question 2: 84 marks]
COMP0020/COMP3011/COMPGC16 3 END OF PAPER Email:51zuoyejun

@gmail.com