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.

Reply via email to