+It may be helpful to contrast these recursive-style definitons to the way one would more naturally define the `length` function in an imperatival language. This uses some constructs we haven't explained yet, but I trust their meaning will be intuitively clear enough.
+
+`let`
+ `empty? match` λ `xs.` *this definition left as an exercise*;
+ `tail match` λ `xs.` *this definition left as an exercise*
+ `length match` λ `xs. let`
+ `n := 0;`
+ `while not (empty? xs) do`
+ `n := n + 1;`
+ `xs := tail xs`
+ `end`
+ `in n`