Faking ADTs and GADTs in languages that shouldn't have them
blog.jle.im