TypeCase: A design pattern for type-indexed functions (2005)

by Bruno C d S Oliveira, Jeremy Gibbons
Venue:In Haskell Workshop