-> let extract_head = \lst larger_computation. lst
-> (\hd sofar continue_handler abort_handler. abort_handler hd)
-> junk
-> larger_computation
-> larger_computation
+> The left fold on the other hand starts combining `z` with elements from the left. `f z a` is then combined with `b`, and so on:
+>
+> f (f (f (f (f z a) b) c) d) e
+>
+> or, if we preferred the arguments to each `f` flipped:
+>
+> f e (f d (f c (f b (f a z))))
+>
+> Recall we implemented v3 lists as their own right-fold functions. We could
+> instead implement lists as their own left-fold functions. To do that with our
+> v5 lists, we'd replace above:
+>
+> let make_list = \h t. \f2 z continue_handler abort_handler.
+> f2 h z (\z. t f2 z continue_handler abort_handler) abort_handler
+>
+> Having done that, now `extract_head` can return the leftmost head
+> directly, using its `abort_handler`:
+>
+> let extract_head = \lst larger_computation. lst
+> (\hd sofar continue_handler abort_handler. abort_handler hd)
+> junk
+> larger_computation
+> larger_computation