This note describe how to present code submitted as part of a homework
of this class (CS 568, Functional Logic Programming, Fall 2017).
Identify each problem/question of the homework, including problems for which
you do not submit a solution. If you state why you do not submit a
solution, such as lack of time or lack of knowledge, I may give you
extra time and/or hints. You may still get some points.
In English, perhaps as a comment, enumerate and describe the elements
of the problem and their relationships. The description should be
precise enough to determine the solution (not necessarily how to
Use expressive names for your types. Introduce "type" declarations
that capture the elements of the problem.
Include a 1-2 line comment before each function that both describes
the behavior of the function and provides an example of what it computes.
-- find the maximum of the arguments, e.g, max 5 7 returns 7
max :: Int -> Int -> Int
max x y ...
Include unit testing for most functions. Ideally, there are 2 kinds of tests.
Some very simple cases to help understanding the behavior of the function.
And some cases that an incorrect function should fail.
In other words, these cases should directly check the requirements.
Include a trace of the execution of your tests.
You may feel that some question of the homework is stupid.
You are welcome to say so and why.
You can extend and expand any question in any direction.
However, you should answer the stupid question as well and
keep your extensions and expansions separated so I can grade
the stupid answer (sorry, I mean the answer to the stupid
Program code is printed out, not handwritten.