So far Elm has been developed based on problems/solutions with clear examples showing the before/after. This has been a great help in keeping discussions focussed and the language simple and down-to-earth. But I’m worried.
What if this example based approach will only bring our attention to low hanging fruit? I do think there are problems that are hard to capture in small examples. Like the code duplication vs type system complexity discussion, where showing a real duplication problem will take a huge amount of effort and it’s hard to come up with a proper example that can’t be hacked around. And then also still fit what most people think Elm’s focus is.
Now this may not be the time to start introducing more complex things to the language when the user base isn’t agreeing on whether code duplication is a growing problem. But are we quite sure that if it does become a problem, people will be willing to spend a lot of time to come up with more convincing examples? I’m afraid people might leave because of their impression that Elm is not suitable for larger systems. I think getting new users for Elm is not a huge problem right now. We’re on the right course, people are evangelising etc. But keeping those who gain an interest requires not only a nice ecosystem for larger programs, but also a language that accommodates the right things.
I’m not sure where I’m going with this, but I’m concerned by the general idea that example-driven design will only get us low-hanging fruit. That we should also consider larger and longer-term goals that may not come up in the form of simple examples. So I’m sharing my thoughts. Mostly for Evan’s benefit, but there are other knowledgeable PL people subscribed to this mailing list, so perhaps they can share their thoughts and experiences?
--
You received this message because you are subscribed to the Google Groups "Elm Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elm-discuss...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
I didn't mean to make this about the fancy types specifically, it's just the point where I started wondering about all of this. It was just an example :P
The reason I was a little worried is because you never explicitly shared this kind of message about how you think things through when you prioritise. You always share bits of the process but never an overview like this. I'm now confident that you know exactly what you're doing.
I mean, obviously you're smart and competent, otherwise Elm wouldn't be such a success. But I also remember how you were still figuring some of this out, this leading of an open source project, around the time I first joined the mailing list. So that image was still in my head somewhere.
Thanks for explaining a little more about how you work. I'm not worried about the example-driven approach any more.
Now let's suppose people run into real issues in large code bases because they really need to say (forall a. a -> b). I don't believe Java has this feature, but they seem to be okay.