Art, thanks for your input. I do like Haskell-like syntax and programming model (something like Elm) so I haven't tried Fable yet, although F# syntax is alright. Based on what you are saying and my trials, everything (really incluing Elm) is still in too unstable stage, although Elm is somewhat usable (although slow) as it is.
I did the following: 1. Tried PureScript in the browser on their "try" website and found that although I could reasonably quickly get used to its changed syntax and type class model from Haskell, libraries aren't very stable in that although I could write and compile successfully a simple little Data.List.Lazy progression, it would fail silently for some program variations and blow up with a stack overflow for others; I think it is inconsistent in applying force to the lazy stream with the library functions. 2. I tried installing GHCJS since it doesn't have a try website, and found that not smooth at all, with broken version references in the cabal file. Eventually I got it to install with a patched version that someone had contributed, but couldn't get the ghcjs-boot to build the libraries as per the instructions because some parts weren't installed where the OS could find them (more patches, messing around required) - not stable enough if it takes all this work! 3. I haven't tried Fable, but from what you are saying it will probably install but you are saying that the code output sometimes isn't very good, with no package subsystem. 4. I tried Kotlin for generating JavaScript but found that although it generates code for the JVM fine, it still isn't very stable for producing JavaScript code, and only versions in development have some success at all (with tail call optimization that works for JVM not working for JavaScript). So it's back to using Elm for the front end and TypeScript/JavaScript, which are stable, for the stuff that needs to be faster until some of these, hopefully GHCJS but PureScript would be acceptable get more stable and work consistently. Elm compiling to more efficient code would also fill my needs. By the dates on the latest PR commits and how much there is to do, PureScript, and Fable have the best chance of getting there reasonably quickly, with Elm also actively developed, but I think we are looking at a minimum of a year for any of them to get to stable status. On Thursday, 29 December 2016 22:23:50 UTC+7, art yerkes wrote: > > I can comment a bit on purescript and fable (and ghcjs) from a n00b > perspective in all three. > > - Purescript's type system is not as well polished as haskell and has IMO > a steeper learning curve. > - Purescript's package ecosystem is very immature. > - Purescript's js interop is very easy and doesn't fight at all. > - GHCJS speed was surprisingly fast and it has concurrency features > builtin (such as calling haskell from javascript with and without a wait > for a result, chans etc). > - GHCJS has the full haskell package set, but pins some emulated packages > at specific versions, so some caveats apply. > - GHCJS interop allows you at the core to just define javascript to run > inline, but seems to be in flux in recent versions. I was able to use the > basic interop features but couldn't find current docs on advanced ones. > - Fable's type system has everything from .net, including classes and > interfaces that work as you expect. It's basically the same type system as > kotlin plus proper sum types and convenient product types. The fable > language output isn't as perfectly stable and mature as others however and > the type system has a hole: some functions are invisibly curried > (temporaries, non-exported functions in a module), and some invisibly > javascript-style (exported ones in a module, interface methods). > - Fable's package ecosystem is basically nonexistent, and pure F# > generally won't work if it relies on unemulated stuff from System.* but js > interop is easy. > - Fable's interop is mature and pretty good. It lets you just formulate > javascript to have in the literal generated code, replacing a specific > function call. > > On Thursday, December 29, 2016 at 3:51:50 AM UTC-8, GordonBGood wrote: >> >> >> >> On Thursday, 29 December 2016 09:47:13 UTC+7, Martin DeMello wrote: >>> >>> On Wed, Dec 28, 2016 at 6:25 PM, GordonBGood <[email protected]> wrote: >>>> >>>> >>>> Related to speed, it seems to me that the working Fable (F#) code >>>> linked from your link above is more responsive than the working Elm code >>>> from another link on that page, both for the same sample application; am I >>>> imagining things or do you see that too? >>>> >>> >>> yes, but it seems to be due to a slower load time from the backend >>> rather than any perceptible frontend differences. >>> >>> martin >>> >> >> Do you know anything about PureScript as compared to Fable and Elm >> (according to the article it sits somewhere between as far as safety goes)? >> It seems that it has an extensive Haskell-like syntax and philosophy, but >> that may be overly complex for the types of people who would rather choose >> Elm. >> >>> >>> >> -- 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 [email protected]. For more options, visit https://groups.google.com/d/optout.
