Ok i think i understood, was my confusion, arriving from an OOP approach.
So basically, when i have multiple named functions with the same name but different arguments i'm defining clauses, like i do in anonymous functions with multiple bodies.
Now is clear.
So i can't define two clauses with the same name and same number of arguments. Make sense.