## 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

Last updated: 1994-11-03

### Nearby terms:

undocumented feature ♦ U-NET Limited ♦ unfold ♦ **unfold/fold** ♦ UNI ♦ unicast ♦ Unicode

Try this search on Wikipedia, OneLook, Google

Loading