|
|
|
|
|
by weatherlight
1011 days ago
|
|
It's not that hard, also Elixir is basically gradually typed with dialyzer. It's not like working on a dynamic and weakly typed lang like vanilla JavaScript or Perl at all. I do want to clear something up. Elixir is strongly typed, but its not statically typed. More here: https://www.educative.io/answers/statically-v-dynamically-v-... Even for langs that are statically/ and strongly typed on the BEAM (like Gleam, whose type system is similar to that of Standard ML or OCaml) still subscribe to the "Let is Crash" philosophy, especially when it comes to messages sent and received between processes. The only thing that is guaranteed is your system will fail at some point, how should the system protect its self form that? https://www.educative.io/courses/concurrent-data-processing-... In short, its not like working with Ruby or JavaScript or Python, etc.. |
|
If you change the shape of a model object and break its type, it’s great that BEAM will gracefully handle that mistake, but no matter how many times that service restarts, it will still be broken at runtime.
I think type systems have gotten so good in modern languages (Kotlin for example) that it’s a disservice to your org to not use a statically typed language.
I haven’t looked at Dialyzer lately, but is it as robust and easy to use as a first class type system? Having experienced partial typing with annotations with python I must say it’s not nearly as smooth as a proper statically typed language.
I do wish something like Gleam was the front runner language on BEAM - I bet it would get taken a lot more readily.