The Second Sex
More from Terms and Truth-Conditions
For a few years now I have been working on the Haskell Language Server (HLS), and the lsp library for the LSP protocol and writing LSP servers. Unsurprisingly, I have developed some opinions about the design of the LSP! Recently I gave a talk about HLS and LSP at the Haskell Ecosystem Workshop at Zurihac 2024. One slide featured a hastily-written...
Note: this post assumes you know quite a bit about defunctionalization. If you don’t read this post first.
If you spend enough time in risk-tolerant places (e.g. startups, blockchain) you start to notice a particular pattern. A charismatic founder, call them Alice, starts a new project. The project seems to be transparently stupid or bullshit, but somehow they manage to secure a lot of funding and/or users. After a while, the project fails, probably...
The Haskell Language Server (HLS) codebase has a lot of CPP conditionals. A lot of them look like this: #if MIN_VERSION_ghc(9,2,0) which says that the version of the ghc library has to be at least 9.2; or this #if MIN_VERSION_ghc(9,2,0) && !MIN_VERSION_ghc(9,3,0) which says that the version of the ghc library has to be between 9.2 and 9.3; or...
It was good, but I didn’t find myself as blown away as some people seem to have been. I did have some thoughts, so here they are (spoilers!).