Cluster
May 9, 2014
Clustering is the process of collecting in groups all of the items from an input collection that share some common feature; for instance, the GROUP BY
operator of SQL performs clustering. We will define cluster(proc, lt?, lst)
as a function that takes an input list and returns a list of lists; proc
computes a signature of each item in the input list, and each sub-list in the output list contains all those elements of the input list with identical signatures, with sub-lists in increasing order of signature according to lt?
. The type of cluster
is (α → β) × (β × β → boolean
) × (list
α) → (list
(list
α)).
Your task is to write the function cluster
. When you are finished, you are welcome to read or run a suggested solution, or to post your own solution or discuss the exercise in the comments below.