The Free On-line Dictionary of Computing (30 December 2018):
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
   (1994-11-03)