Unfold/fold




A program transformation where a recursive call to a function is unfolded to an instance of the function's body and then later an instance of the function's body is replaced by a call.

E.g.

sumdouble l = sum (double l)

double l = case l of []

-> [] x:xs -> 2*x + double xs

==> (unfold double)

sumdouble l = sum (case l of []

-> [] x:xs -> 2*x : double xs)

==> (distribute over case)

sumdouble l = case l of []

-> sum [] x:xs -> sum (2*x : double xs)

==> (unfold sum)

sumdouble l = case l of []

-> 0 x:xs -> 2*x + sum (double xs)

==> (fold sumdouble)

sumdouble l = case l of []

-> 0 x:xs -> 2*x + sumdouble xs



< Previous Terms Terms Containing unfold/fold Next Terms >
underscore
under the hood
undocumented feature
U-NET Limited
unfold
inline
program transformation
UNI
Unicode
UniCOMAL
unicos
Uniface