I consider programming languages one of my healthy hobbies. being able to clearly formulate logical arguments is of utmost importance as an engineer. After all, when we claim we are able to implement a solution it should be possible to implement. Programming languages span many different areas.

The first aspect of programming languages is semantics. What can we say about programs? How do we build programming languages where we can guarantee properties about a program. The relevant article here are

Patterns in programming is also interesting. The programming language always exposes patterns. These are typically functions, ie. abstraction and application, but can also be iteration and other control structures along with sequencing as we see in imperative programming languages.

  • The Probability Monad: Monads are a ubiquitous pattern in Haskell as it is a way to cope with Haskell's lazy evaluation in situations where order matters, such as reading from stdin. But it is also a useful abstraction over other objects such as probabilities.