English Computing Dictionary
◊ UNFOLD/FOLD
unfold/fold
A {program transformation} where a {recursive} call to a
function is {unfold}ed 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
(1994-11-03)