Truly awesome and very promising.
Truly awesome and very promising.
http://hackage.haskell.org/trac/ghc/wiki/Building/CrossCompi... https://github.com/ghc-ios/ghc
Trampolines still work, albeit with a pretty substantial perf penalty.
Manual tail calls can perfectly well be implemented without breaking anything.
GHCJS currently uses a trampoline, but all calls are in tail position, so when this gets implemented we can easily generate code that uses native JS tail calls.
Like GHC, GHCJS uses its own stack for non-tail calls.
As someone who is very familiar with purely functional languages and with multiprocessor synchronization, I must ask, why would anyone want to use any of these things in Haskell? Aren't two of the primary benefits of Haskell the ability to auto-parallelize, and not needing to reason about state?
Haskell is actually quite good at it, and jokingly referred to as "the world's finest imperative language".