> Once you are actually writing your own code however, i find there's less bugs as immutable data structures eliminate whole classes of bugs you find in ruby. Its not as air tight as a fully typed language but I do get descent warnings at compile time to catch plenty of low hanging fruit when it comes to runtime errors. to be sure, you definitly have to think differently about how you code as you haev to think in a more functional style.
This is my experience too - Elixir might not be statically typed, but it's not nearly as big of a problem as you'd think. Immutability, pattern matching, and the general functional style all give you some strong guardrails that avoid a lot of the usual pitfalls of a dynamic language. Plus you also get the benefits of dynamic typing too (flexibility, more succinct code, faster iteration time.)
Sure, it's not as foolproof as a full static type system, but it's good enough in my experience. It's not even close to the uber-fragile NoMethodError clusterfuck that is Ruby development.
This is my experience too - Elixir might not be statically typed, but it's not nearly as big of a problem as you'd think. Immutability, pattern matching, and the general functional style all give you some strong guardrails that avoid a lot of the usual pitfalls of a dynamic language. Plus you also get the benefits of dynamic typing too (flexibility, more succinct code, faster iteration time.)
Sure, it's not as foolproof as a full static type system, but it's good enough in my experience. It's not even close to the uber-fragile NoMethodError clusterfuck that is Ruby development.
I wrote a longer blog post a while back expounding on this point if anyone's interested: https://phoenixonrails.com/blog/you-might-not-need-gradual-t...