When is a function a fold or an unfold? - Gibbons, Jeremy; Hutton, Graham; Altenkirch, Thorsten (Elsevier Science, 2001)
We give a necessary and sufficient condition for when a set-theoretic function can be written using the recursion operator fold, and a dual condition for the recursion operator unfold. The conditions are simple, practically useful, and generic in the underlying datatype.