News for hackers. Stuff that matters.
Re:Elixir at Ramp by sodapopcan on Friday November 24, 2023 @06:24PM (#38409506)
To show the struct example:

    def do_thing(%Foo{} = foo), do: foo
Here `foo` has to be type of struct `%Foo{}`.

    def do_thing(%Foo{bar: "baz"} = foo), do: foo
Here `foo` has to be struct `%Foo{}` with field `:bar` with the value of `"baz"`.

Another one I like to point out is how operators aren't rampantly overloaded.

    def add(a, b), do: a + b
This will _only_ work with floats or integers because `+` only works on those types. String concatenation, adding lists, date math, etc have their own operators/functions.

While Elixir does offer mechanisms to overload operators, you have to be very explicit about it. There is no way to globally redefine `+`, for example. It would be on a per-module or even per-function basis (and not something that is done too often, though there are some good uses of it out there).

Dynamic typing in Elixir really isn't that big a hinderance if you stick to its idioms. That said, I'm fairly excited about the prospect of the type system.

There are no comments on this comment yet.