That's not overloading! That's how some (e.g. Haskell) languages define 
function by cases, like 
    
    
    factorial :: (Integral a) => a -> a
    factorial 0 = 1
    factorial n = n * factorial (n - 1)
    
    
    Run

It's equivalent to OCaml's 
    
    
    let rec fact n =
      match n with
        0 -> 1
      | n -> n * (fact (n - 1))
    
    
    Run

where the explicit use of match helps you see it's not overloading.

What I would like from FPLs and Rust, is algebraic data types (yeah, I know 
about Nim macros to emulate them) instead of object variants, but that's too 
big a change at this stage of Nim's existence.

Reply via email to