https://gren-lang.org/book/appendix/faq/#what-are-the-differ...
IMHO it should be more prominent on the hope page or the elevator pitch.
Gren isn't compatible, and will never be compatible, with Elm. There is different syntax, API's and runtime characteristics. And it will continue to diverge more and more.
That Gren is a fork, was mostly to save development time. You can expect that much of the compiler and core packages to be rewritten in a few years.
I use Elm in production and am quite happy with it. Abandoned or not doesn't seem like an issue in practice.
https://package.elm-lang.org/packages/elm/json/latest/ https://package.elm-lang.org/packages/elm/http/latest/Http
* Compile to WASM
* Parametric modules (OCaml functors)
* Structural (as opposed to nominal) unions
* Improvements to the Ports (FFI) mechanism while still retaining purity
* Actors(?)
* Support more builtin Browser and NodeJS APIs out of the box
(I’m a big fan of MLs so this is a genuine question!)
My main worry about pure functional languages is that you are at the mercy of the compiler for optimization - for better or for worse. In OCaml or F# I can hand-write things in an imperative way on hot paths. This still doesn’t prevent OCaml from having great optimization passes.
1. Improve FFI (aka Elm Kernel for everyone) 2. Support Self hosted packages 3. Implement LSP for better IDE integration?
Im cautiously optimistic about Gren, and hopefully some of these concerns can be addressed.
2. Yes. Most of the pieces are implemented already, and we support local dependencies (as in, depend on a package on your local disk). We "just" need to figure out how to represent a remote repo in gren.json (easy) and what to do with name collisions (less easy).
3. Yes. Gren-in-Gren is currently underway. Once the parser is re-written, it will be made available as a package. This means it should be easy for anyone to write an LSP, formatter, linter etc. But it wouldn't surprise me if LSP becomes integrated with the compiler.
Today, you use + for numbers, and ++ to concatenate strings and list.