Faking ADTs and GADTs in Languages That Shouldn't Have Them
"Haskell is the world’s best programming language, but let’s face the harsh reality that a lot of times in life you’ll have to write in other programming languages. But alas you have been fully Haskell-brained and lost all ability to program unless it is type-directed, you don’t even know how to start writing a program without imagining its shape as a type first..." https://blog.jle.im/entry/faking-adts-and-gadts.html
8