4 research outputs found
Maximum Segment Sum, Monadically (distilled tutorial, with solutions)
The maximum segment sum problem is to compute, given a list of integers, the
largest of the sums of the contiguous segments of that list. This problem
specification maps directly onto a cubic-time algorithm; however, there is a
very elegant linear-time solution too. The problem is a classic exercise in the
mathematics of program construction, illustrating important principles such as
calculational development, pointfree reasoning, algebraic structure, and
datatype-genericity. Here, we take a sideways look at the datatype-generic
version of the problem in terms of monadic functional programming, instead of
the traditional relational approach; the presentation is tutorial in style, and
leavened with exercises for the reader.Comment: Revision of the article in Proceedings DSL 2011, EPTCS 66,
arXiv:1109.0323, to provide solutions to the exercise
Polytypic Downwards Accumulations
A downwards accumulation is a higher-order operation that distributes information downwards through a data structure, from the root towards the leaves. The concept was originally introduced in an adĀ hoc way for just a couple of kinds of tree. We generalize the concept to an arbitrary polynomial datatype; our generalization proceeds via the notion of a path in such a datatype
Polytypic Downwards Accumulations
A downwards accumulation is a higher-order operation that distributes information downwards through a data structure, from the root towards the leaves. The concept was originally introduced in an adĀ hoc way for just a couple of kinds of tree. We generalize the concept to an arbitrary polynomial datatype; our generalization proceeds via the notion of a path in such a datatype