I find it very handy that the intermediate Erlang (or JS) files are available in the build directory. It lets you easily see what form your code will take when compiled.
I find it very handy that the intermediate Erlang (or JS) files are available in the build directory. It lets you easily see what form your code will take when compiled.
It seems that Gleam is really useful for those who are already in either the Erlang/Javascript ecosystem.
For me personally, the Javascript target is the least interesting bit - the BEAM/Erlang target is where it's at for backend work. The BEAM is fascinating and full of ideas that were once ahead-of-their-time but now are really coming into their own with compute performance having caught up.
Gleam is a strongly typed language, and is unapologetically very functional. Error handling in general is quite different than it would be on a normal stack-based language/vm. In my experience, the Erlang target doesn't make debugging any harder or more difficult than you would expect for an exception-less language.
I've created Vleam[0] to convert an existing vue webapp[1] and so far it's a joy.
[0]: https://github.com/vleam/vleam
[1]: https://blog.nestful.app/p/why-i-rewrote-nestful-in-gleam
Besides, Gleam's original aim was basically "Erlang but static types", so the choice of Erlang as runtime was always there.