Folding left and right matters: Direct style, accumulators, and continuations. (14th February 2023) - DANVY, OLIVIER
Abstract: The equivalence of folding left and right over Peano numbers and lists makes it possible to minimalistically inter-derive (1) structurally recursive functions in direct style, (2) structurally tail-recursive functions that use an accumulator, and (3) structurally tail-recursive functions in delimited continuation-passing style, using Ohori and Sasano's lightweight fusion by fixed-point promotion. When the fold-left and the fold-right functions account for primitive iteration for Peano numbers, this equivalence is unconditional. When they account for primitive recursion for Peano numbers, this equivalence is modulo left permutativity of their induction-step parameter – a property which is more general than associativity and commutativity. And when they account for primitive iteration or for primitive recursion over lists, this equivalence is modulo left permutativity of their induction-step parameter if these two fold functions have the same type. Since the 1980s, however, the two fold functions for lists do not have the same type: the arguments for their induction-step parameter are swapped, a re-ordering that complicated Bird and Wadler's duality theorems and whose history is reviewed in an appendix. Without this re-ordering, Bird and Wadler's second duality theorem more visibly accounts for "re-bracketing, " which is a key step to make recursive programs tail recursive in the general area of program development, from Cooper in the 1960s and onwards.