Home Articles FAQs XREF Games Software Instant Books BBS About FOLDOC RFCs Feedback Sitemap
irt.Org

unfold/fold

You are here: irt.org | FOLDOC | unfold%2ffold

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)

Nearby terms: undocumented feature « U-NET Limited « unfold « unfold/fold » UNI » unicast » Unicode

FOLDOC, Topics, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, ?, ALL

©2018 Martin Webb