Pattern Calculus Computing with Functions and Structures - Jay, Barry (Springer Berlin Heidelberg, 2009)