If you have a value that can be any type (the 'top type'), what operations should your language support on that value?
Equality is very common, but it's debatable. I increasingly feel that every value in a language should have some sort of debug print available.
miniblog.
Related Posts
Playing with VS Code also reminds me how overloaded the tab key can be. It might do indentation, or LSP completion, or snippet completion, or Copilot completion.
In Emacs I've configured these operations on separate keys (e.g. yasnippet on SPC) which is less surprising.
I've started seeing 'ort' merges in my git operations, which can apparently be hundreds of times faster than the previous merge algorithms: https://www.phoronix.com/scan.php?page=news_item&px=Git-2.33-Released
I've been learning more about refactoring operations ("code actions") in the Language Server Protocol and they're more limited than I realised.
An action is basically a name and an edit. There's no scope for prompting the user or offering GUI options.