I don’t like the phrase “nothing wrong about being explicit”, because it’s not an explanation, but rather a rule of thumb, on one hand, on another – Elm is far from following it. Imagine adding type signature to every variable that you introduce, for example.
In my experience, listing exported symbols doesn’t really help with reading the code very often (unlike explicit list of what’s imported, or qualified imports), doesn’t always match “public interface”, esp when you want to test things, and often people do want to use internal stuff only because you didn’t cover some scenarios via public api.
I like Haskell’s and Python’s approaches much better, one giving additional .Internal module for non-public stuff (still being exposed for tests and brave users), another prefixing private symbols with
That being said, I think having elm-format not being configurable is a wonderful feature, and I would rather keep it so, even if it’ll do the
(..)-expansion. I’ll probably just hack my Emacs to add the export for me without going to the top all the time.