Is it feasible for Elixir to introduce dedicated float operators?

Given:

(apologies for the ping, José!)

Is there a possibility that we could ever get dedicated float operators (+., *., >., …) like in OCaml and Gleam?

I’ve considered the following (what am I missing?):

  • Is there anything that would make this a technical no-go?
    …or maybe it’s already being considered?

  • Would it have to be a 2.0 feature?
    I imagine adding it as opt-in totally defeats the purpose, though I could see a path where we’d get a warning for doing 1 / 1.0 vs an error for 1 /. 1.0. I’m a bit fuzzy on the criteria for this as, for example, I believe the removal of imperative assignment was a post-1.0 feature, no?

  • We would need Integer.to_float/1 and Float.to_integer/1 functions.


What do you all think? Do any of you work on a codebase that would make this a nightmare scenario for you? Do math-heavy libraries like Nx rely heavily on overloaded operators?

Why would we want to do that? :slight_smile: Gleam does not really have multiple clauses, so it makes sense there, but in Elixir and Erlang they are very common. So I don’t see the benefit in going in this direction. Especially when there are so many statically typed languages with this exact feature too (Haskell, Go, Rust, etc).

My assumption was that it would make it possible to infer floats where guards are not needed:

def ints_dont_add_up(a, b) do
  a +. b
end

Because those languages aren’t Elixir… :grin: It just always felt a bit out of place not having them given that operators are otherwise not overloaded (at least in the core language).

I’m not sure I follow how multiple clauses comes into play since Haskell also has them. Although your answer along with the otherwise deafening silence has pretty much answered my question! It’s not a feature I’m dying for or anything which is why I created this as discussion and not a proposal.