detail in ocamlinit
Enumerator (backtrack-ready enumeration of items);
fold function;
List.permute returns an enumerator