Lately I’ve been experimenting with svelte as an alternative to react, I’ve seen some presentations and it seems to me that these low-entry programming languages are much more suitable for real-world projects because they don’t force you to think ahead.
Svelte is particularly interesting cause it’s geared towards performance a lot, the generated code is optimized imperative.
Which made me think… I know Purescript suffers from performance issues, perhaps not so much today, but I definitely saw this issue pop up in the past. I personally don’t know what’s the impact of having deep nested functions when it comes to run performance. I haven’t looked deeply in it, but I guess one of these huge functions would be the main function, right? Cause the operation in the Monad is through piping one result to the next function and so on.
I’m wondering if it wouldn’t be a better approach for Purescript to generate optimized JavaScript code instead of trying to translate the Purescript code 1-to-1. I wouldn’t know how to even begin to make this, but I’m sure some smart people out there can think of ways to do it based on the Purescript AST
What’s your thought on this? I personally would really like to use Purescript in production at some point, but I’m still a super beginner barely understanding the surface.
It’s in real-world application where you have to know advanced concepts that you can’t just skip over which makes the language have a pretty high-entry level. I’m not sure how the bar could be lowered.
Well actually I do have one idea. @thomashoneyman maybe you’d be interested in this :). So one approach I think would be really beneficial is to have a repo with a real world fairly complex example that is built up from scratch, step by step, with tags on Github. I’d say that this would be even better than having a complete explanation of an implemented app cause you can see the app evolve with each step of the implementation.
There are a few advanced topics that someone like me has to spend lots of time understanding like:
- type equality for using eg.
type
with type classes - how to tackle GADTs which isn’t as trivial as in Haskell
- functional dependency… basically you have to know how the compiler works here a bit in order to understand how and when to use it
- existential type for modeling types with private data
- not to mention some type level programming which would be beneficial if working on frameworks and libraries
- different run models: ReaderT/MTL/Free Tagless/Free Monads/Extensible Effects
I’d wager that most beginners will have a hard time understanding these topics.
Well I thought I’d stick with Svelte, but I digressed into learning some advanced Purescript topics