I couldn’t agree more, and I’ve had some thoughts along these lines, especially after looking at languages like Go and Rust.

One of the challenges that I’ve been thinking about is how to avoid “spooky action at a distance” when it comes to extending the behavior of types — that is, if module A imports a type from module B, I don’t want to have module C (which is imported by neither A nor B) change the behavior of B as seen by A. Otherwise the behavior becomes too magical.

I’m not a mad scientist. I’m a mad natural philosopher.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store