I will put in a good word for PureScript for the beam with `purerl`. It's my go-to for writing BEAM code nowadays. Notably PureScript tooling including LSP, package management, etc., just works, so you are able to just get to work in internalizing the way OTP and other Erlangy things are expressed in a statically typed, pure language with much better facilities for functional code than any other BEAM language.
I'm writing proof-of-concept applications in it for our company currently. Our core technology is Erlang (and Elixir), so the jump isn't comparatively as ridiculous as a Java shop suddenly writing PureScript on the BEAM. I trust code written in PureScript far more than I do code written in Elixir and there are already at least 2 companies using `purerl` in production with the majority of their code in PureScript.
With that said, I've been writing Elixir since 2015 and have worked with Erlang & Elixir since a couple of years after that (+ Haskell), so I'm both much more likely to use niche languages and I'm also well versed in using the BEAM. PureScript with `purerl` actually matches Erlang much better than Elixir does, since Elixir spends half the language and standard library trying to not be Erlang, so I find that it's a better match than Elixir even as a citizen of the BEAM, and the type safety is something I've wanted on the BEAM since I first wrote production BEAM code.
All in all I've been blown away by how solid `purerl` is. The runtime is Erlang, the language is excellent; it's what I dreamed about Haskell being but couldn't quite get.
https://github.com/llaisdy/beam_languages
See you down the rabbit hole!