How to replace failure by a list of successes — A method for exception handling, backtracking, and pattern matching in lazy functional languages (1985)

by Philip Wadler
Venue:In Proceedings of the Second Conference on Functional Programming Languages and Computer Architecture, LNCS