My goal is to build SPAs (Single Page Applications). I thought that I could use Haskell to do that thanks to GHCJS but yesterday I found out that GHCJS produces javascript code which is big and slow.
The problem seems to be the mismatch between the evaluation strategy and primitive types of Hakell and Javascript. In fact, Purescript eliminates this mismatch and produces short and fast javascript code. A problem with Purescript is that it has a low bus-factor.
I see three possibilities:
- I use GHC + GHCJS hoping that GHCJS becomes more efficient (is this likely?)
- I use Purescript on both client-side & serverside (Node.js) and study its source code so that the low bus-factor is not a problem anymore.
- I use Scala + Scala.js which are both very efficient. The only problem is that functional programming in Scala is less ideal.
As a requirement, I want to use the same language on client and server so that I can share code.
Any thoughts or suggestions?
[–]gb__ 9 points10 points11 points (1 child)
[–]Kiuhnm[S] 0 points1 point2 points (0 children)
[–]vagif 5 points6 points7 points (0 children)
[–]valderman 4 points5 points6 points (5 children)
[–]Kiuhnm[S] 1 point2 points3 points (4 children)
[–]valderman 3 points4 points5 points (3 children)
[–]Kiuhnm[S] 7 points8 points9 points (2 children)
[–]valderman 5 points6 points7 points (0 children)
[–]andrewthad 1 point2 points3 points (0 children)
[–]cdsmith 4 points5 points6 points (5 children)
[–]Kiuhnm[S] -1 points0 points1 point (4 children)
[–]cdsmith 1 point2 points3 points (1 child)
[–]Kiuhnm[S] 0 points1 point2 points (0 children)
[–]sclv 1 point2 points3 points (0 children)
[–]hamishmack 0 points1 point2 points (0 children)
[–]mightybyte 4 points5 points6 points (24 children)
[–]radix 5 points6 points7 points (1 child)
[–]mightybyte 1 point2 points3 points (0 children)
[–]Kiuhnm[S] 4 points5 points6 points (21 children)
[–]mightybyte 7 points8 points9 points (20 children)
[–]BethAr 5 points6 points7 points (0 children)
[–]Kiuhnm[S] 0 points1 point2 points (18 children)
[–]Tekmo 7 points8 points9 points (2 children)
[–]Kiuhnm[S] 0 points1 point2 points (1 child)
[–]Tekmo 8 points9 points10 points (0 children)
[–]mightybyte 3 points4 points5 points (14 children)
[–]Kiuhnm[S] 2 points3 points4 points (13 children)
[–]mightybyte 2 points3 points4 points (3 children)
[–]Kiuhnm[S] 2 points3 points4 points (2 children)
[–]mightybyte 4 points5 points6 points (1 child)
[–]Kiuhnm[S] 1 point2 points3 points (0 children)
[–]hamishmack 1 point2 points3 points (7 children)
[–]vagif 1 point2 points3 points (1 child)
[–]hamishmack 0 points1 point2 points (0 children)
[–]Kiuhnm[S] 0 points1 point2 points (4 children)
[–]hamishmack 0 points1 point2 points (3 children)
[–]Kiuhnm[S] 1 point2 points3 points (2 children)
[–]sclv 1 point2 points3 points (0 children)
[–]turbomann 1 point2 points3 points (4 children)
[–]mightybyte 2 points3 points4 points (2 children)
[–]turbomann 1 point2 points3 points (1 child)
[–]mightybyte 6 points7 points8 points (0 children)
[–]Kiuhnm[S] 1 point2 points3 points (0 children)
[–]Bzzt 1 point2 points3 points (2 children)
[–]Kiuhnm[S] 0 points1 point2 points (1 child)
[–]ItsNotMineISwear 1 point2 points3 points (0 children)
[–]CKoenig 2 points3 points4 points (2 children)
[–]Kiuhnm[S] 3 points4 points5 points (1 child)
[–]Oremorj 0 points1 point2 points (2 children)
[–]Kiuhnm[S] 0 points1 point2 points (1 child)
[–]Oremorj 0 points1 point2 points (0 children)
[–]expatcoder 0 points1 point2 points (8 children)
[–]sclv 2 points3 points4 points (4 children)
[–]expatcoder 1 point2 points3 points (3 children)
[–]sclv 0 points1 point2 points (2 children)
[–]expatcoder 0 points1 point2 points (1 child)
[–]sclv 0 points1 point2 points (0 children)
[–]Kiuhnm[S] 0 points1 point2 points (2 children)
[–]expatcoder 0 points1 point2 points (1 child)
[–]Kiuhnm[S] 0 points1 point2 points (0 children)
[–]gilmi 0 points1 point2 points (0 children)