For a long while I didn't fully grasp the funky syntax of typed functional languages like ML and Haskell, until I realized a fundamental difference between many typed functional languages and common imperative languages.

So I am currently studying the language of "serious" language researchers in order to write a paper about Cat, and the book "Types and Programming Languages" by Benjamin Pierce has turned out to be a huge boon!

In Joy any number is an executable program, which pushes the the number on to the stack. This begs the question: what is the type of 42? In Cat I created two separate types, but now I am rethinking that choice.