6 ms·
Elixir is not strongly typed. You can bind any data type to a variable at any time.
by loloquwowndueo 3y ago
Elixir is not strongly typed. You can bind any data type to a variable at any time.
- pitkali 3y agoElixir doesn't technically have variables. Those are bindings: you give names to values. Variable would be more like a box storing a value.
- impulser_ 3y agoThis is not true. For example doing "1" + 2 would give you an error.
- sodapopcan 3y agoYou also can't do "foo" + "bar" to get "foobar", you have to do "foo" <> "bar" giving it even more type "strength" than many strongly typed dynamic languages have.
- arcanemachiner 3y agoDo you know if that was a conscious decision for that reason? I always wondered why that operator was used instead of a + sign.
- sodapopcan 3y agoI think it is pretty standard in functional languages not to overload operators. There may be technical reasons as well, I'm a bit out of my depth here, but it probably is better for performance with pattern matching knowing the type? Like `"hello " <> there = "hello there"`. Of course it's not just strings—concatenating lists uses ++ and for dates have their own functions. OCaml takes it a step further with numbers where `+` only works on integers. You need to do `+.` to add floats. This lets it be statically typed without having to actually specify any types. Again, a little out of my depth in terms of rock solid explanations.
- aarbor989 3y agoBut on the flip side you can also do "if my_var", which will evaluate to true for any non-nil value and non-false value
- sodapopcan 3y agoIs that a common source of typing errors? Genuinely wondering as I don't have a whole lot of experience with statically typed languages. I've personally never had a bug related to it. I wasn't meaning to imply everything is perfect, though. For example equality operators take anything. I believe there may be changes coming around there.
- status_quo69 3y agoElixir is strongly typed, elixir is not statically typed
- heisenzombie 3y agoParent is making a distinction between “strongly” and “statically” typed. By some definitions. Type conversions in Elixir are generally explicit (contrast with JavaScript) and the type of a variable matters at runtime (e.g think about pattern matching), and so some people would call it “dynamic and strongly typed”.
- shijie 3y agoThis is untrue. https://thinkingelixir.com/elixir-in-the-type-system-quadrant/#:~:text=Elixir%20has%20a%20strong%20type,type%20where%20precision%20is%20lost https://thinkingelixir.com/elixir-in-the-type-system-quadran....
- arrowsmith 3y agoYou're thinking of statically typed, which Elixir isn't. Elixir is strongly typed, which means something different.