When comparing PharoJS vs Fay, the Slant community recommends Fay for most people. In the question“What are the best solutions to "The JavaScript Problem"?” Fay is ranked 11th while PharoJS is ranked 20th. The most important reason people chose Fay is:
Fay produces smaller output than pure Haskell compilers such as GHCJS; It does not need to include the whole Haskell runtime, as it drops support for features such as multi-threading, giving it fewer dependencies.
Ranked in these QuestionsQuestion Ranking
Pros
Pro Program the web in Smalltalk
For people who enjoy programming in Smalltalk, Pharo allows developers to use Smalltalk for web development as well, since it transpiles Smalltalk code to JavaScript.
Pro Support for Phonegap to go directly to iOS/Android mobile App
Pro Compiles to very efficient Javascript, with almost perfect Smalltalk semantics
Pro Great IDE support
Pro Seamless integration with JavaScript libraries
Can directly call to / be called from JavaScript and can use foreign JavaScript objects.
Will soon have ability to generate and use AMD modules.
Pro Small output
Fay produces smaller output than pure Haskell compilers such as GHCJS; It does not need to include the whole Haskell runtime, as it drops support for features such as multi-threading, giving it fewer dependencies.
Pro Simple, flexible, hackable FFI
As with UHC, the FFI to Javascript works with printf-style format:
max = ffi "Math.round(%1,%2)"
This can simplify code needed to make calls to methods on objects, in contrast to e.g., Purescript's FFI, which requires that methods be wrapped in Javascript. Similarly to UHC, Fay also supports the use of %*
, for javascript functions with arbitrary numbers of parameters, such as concat
, though they must expose an explicit number of parameters to Fay.
Pro Easy to set up, with packages available on Cabal
Fay is available on Cabal, as are Fay packages, so getting up and running is as simple as typing 'cabal install'. Happstack, Snap, and Yesod packages are available on Hackage, as are bindings for JQuery and Backbone.
Pro Subset of Haskell - nothing new to learn
Since Fay is a subset of Haskell - Lazy, statically typed, and pure by default. There's no new syntax to learn, and no surprises when it comes to the semantics of your code. This extends into function names as well - Fay programmers can use familiar functions such as putStrLn
to output to the console, rather than Javascript-specific versions.
Cons
Con No typeclasses
This can cause some overhead.