3

Recursion

The functions and datatypes we have written so far are limited in power:

  • We lack a mechanism to repeat a number of computation steps. If we want some computation to be repeated five times, we explicitly have to write five function calls. If we want six instead, we have to modify the program and add a sixth call.
  • Similarly, we lack a mechanism to arbitrarily extend the size of a data structure. If we want a data structure that holds five values, we have to write an algebraic datatype (ADT) definition with a constructor that has five fields. If five is not enough, and we want six instead, we need to modify existing definitions.

These extensions of existing definitions quickly become unwieldy for larger sizes, and we cannot dynamically ...

Get Soar with Haskell now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.