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(1994-11-03)