A technique invented by phil wadler for eliminating intermediate data structures built and passed between composed functions in function languages.