module Warmup: sig
.. end
This module contains a series of warmup exercises with the List.fold_left
and List.fold_right
functions. These exercises are intended to give
familiarity with the basic principles of folding, a ubiquitous technique in
functional programming.
val sum : int list -> int
The sum
function returns the sum of the elements in a given list. More
precisely, sum [x0; ... ; xn] = x0 + ... + xn
.
val rev : 'a list -> 'a list
The
rev
is an alias for the
List.rev
function which reverses a list.
To expand on the specification in the
official
OCaml List module documentation, we should have
max2 [x0; ... ; xn] = [xn; ... ; x0]
val max2 : 'a list -> 'a
The
max2
function should return the second-greatest element in an
'a list
with respect to the canonical ordering given by
Pervasives.compare
. Your implementation should satisfy the following
identity:
List.length (List.filter ((>) (max2 xs))) = 1
for all input
lists
xs
.
val all_pairs : 'a list -> ('a * 'a) list
all_pairs xs
should return the set-theoretic product of the list xs
with
itself. That is, for each x,y
in xs
, the pair (x,y)
should occur in
all_pairs xs
.