CPS.hs
1  cfold' func init [] = init
2  cfold' func init (first:rest) = func first init (\init_ -> cfold' func init_ rest)
3  
4  cfold func init lst = cfold' (\first_ init_ cont_ -> func first_ (cont_ init_)) init lst
5  
6  cmap' func [] = []
7  cmap' func (first:rest) = func first : (cmap' func rest)