“The Expression Problem is a new name for an old problem. The goal is to define a datatype by
cases, where one can add new cases to the datatype and new functions over the datatype, without
recompiling existing code, and while retaining static type safety (e.g., no casts).”
Using interfaces (like in Java) as the datatype example, the problem simply asks whether it is
possible to derive the interface and add new methods to the interface, without having to recompile
existing code or to resort to using casts.
Now that the design of the site is finished, I can finally focus on the essentials.
I’ve decided that this year I will be writing a bit more, here, and elsewhere. To that end, when it
comes to this site, I’ve had to perform a simple but challenging task: lowering my standards.
Last year, I did not publish anything because I had absurd standards for content. In my mind, every
blog post had to be a thoroughly researched and carefully argued piece, capable of standing the test
Software development tools are in a state of flux. There are two competing
directions towards which static analysis tools—like linters and
type checkers—are heading.
The traditional direction is to operate in a batch model. Fire up, perform analysis, report
results, and die. This is a proven method. Batch-oriented software has been around for ages, and it
works really well if the data you’re working with isn’t large.