@unpublished{Gibbons99:Lecture, title = "Lecture Notes on Algebraic and Coalgebraic Methods for Calculating Functional Programs", author = "Jeremy Gibbons", year = "1999", annote = "Functional programs are merely equations; they may be calculated by straightforward equational reasoning. Many useful theorems for such reasoning derive from an \emph{algebraic} view of programs, built around datatypes and their operations. Traditional algebraic methods concentrate on initial algebras, constructors, and values; dual, co-algebraic, methods concentrate on final co-algebras, destructors, and processes. Both methods are elegant and powerful; they deserve to be combined.", month = "mar", note = "Estonian Winter School on Computer Science", }