To summarise some of the discussion -
There seems to be little to no disagreement on the following -
- We don’t want to dumb down Purescript or compromise Purescript’s language abstractions to increase adoption.
- The ecosystem could be better. We need more libraries to cover missing pieces like GraphQL integration, and stuff like libraries, frameworks, tooling, documentations and examples, with a focus on building web related applications (browser and node).
- Compiler UX could be more user friendly (better error messages).
- We need a killer app for Purescript
- Tooling needs to be faster and improve even further. Though no doubt it is already in great shape.
- The generated code could be more optimised. However it’s a plus that Purescript generates straightforward code, and we would like to retain that.
The following is more contentious -
- Purescript is more mature than its 0.x version seems to indicate.
- We want to attract more developers to the Purescript ecosystem. The developers should encompass both people looking for a better Javascript, and people looking for a better FP language.
- Some features
- Some features required for practical real-world programming are missing in Purescript and may require compiler or language changes. We want to figure out a way forward to incorporate some of them. The best example from this thread is code-splitting / lazy loading.
There is still a conversation to be had about increasing Purescript’s suitability for general purpose use. Some people (like me) would like to see Purescript compete in all aspects with other mainstream FP-ish programming languages. However I’m seeing two lines of thought amongst the naysayers -
- Improving Purescript’s Javascript integration is not as important as other things. We should focus on other strengths of Purescript like multiple backends.
- Improving Javascript integration is a futile effort because principled strong static typed FP will never be as mainstream as other languages that are either backed by large corporates or cut corners in some ways, and satisfying the demands made by such an integration is not possible to do it without compromising existing features and safety, or the effort to do so is too big.