Static-ls v1.0 announcement | Mercury

I previously posted on reddit a year ago about a simple language server I wrote.

Since then it has come a really long way in terms of features and stability and beocme an “officially endorsed” project used by a majority of our backend engineers at Mercury.

We face a pretty unique set of challenges in terms of the scale within the Haskell ecosystem and the blog post goes over some of the reasons we’ve moved internally

Please give it a read if you’re interested!

(Please note the version on hackage is out of date unfortunately so right now I recommend building from source if you’d like to try it out!)

Happy to answer any questions about it/help with any issues!

34 Likes

This is a very cool idea!

1 Like

Thank you! Just wanted to say really appreciate your work on Bluefin as well :slight_smile: one of the coolest effect systems, my coworker and I who worked on this discussed it extensively - even considered using it!

1 Like

Thanks :slight_smile: It looks like you chose to use MTL style (e.g. Monad.hs). Are there any reasons you can share regarding why you didn’t go with Bluefin in the end?

If you ever have any questions about Bluefin, or if I can be of any help, then please feel free to ask (for example, by opening an issue).

1 Like

Yeah we did end up just sticking to mtl mostly due to familiarity and (perceived) simplicity. Most of the code was already mtl style when I started the project so migrating things over would have been plus mtl is used pretty extensively internally within Mercury so is something I’m far more familiar with. Probably the biggest thing was that the constraint signatures took some getting used to and are we were a bit concerned would be confusing to people who weren’t as familiar to Haskell looking to contribute. To be clear none of this is a failing on Bluefin’s part but mostly a product of our internal preferences.

Also worth noting we ended coming across issues in terms of the ergonomics and boilerplate of writing mtl that we would have likely not run into had we chose to go with bluefin and being able to pass in value level handles through arguments was something @oberblastmeister and I discussed explicitly wanting to do.

1 Like