Neil Mitchell, Colin Runciman: Losing functions without gaining data: another look at defunctionalisation. Haskell 2009: 13-24