Nope. No thinking in types required there.
> I am simply saying I want "plus" semantics to be identical to "+".
Yup. And that's exactly what the code that Drup pasted does.
> If "+" is capable enough to add the String "one" and "two" together
Yup. And that's exactly what the code that Drup pasted will do.
If you're telling me you don't have to think about types, then you and I are on the same page.
But it sounds like we're talking Haskell here, so afaik, somewhere Haskell is going to ask you to specify types so that it can complete its type-proof (i.e., compile.)
If you're saying No, Haskell doesn't need that, then I'm afraid you have a dynamic language on your hands.
Prelude> myfun x y = x ^ 2 + 2 * y * x - y ^ 2
Prelude> myfun 3 6
9 myfun x y = x ^ 2 % 2 * y * x - y ^ 2 55 % 102 would produce 55102
I made it up.And if your answer is "I only need it to work on integers" then don't blame Haskell when I choose to specialise it to Int!
This is a silly example, of course, but the real world isn't short on creativity/silliness.
(I'm not saying this is how to code, but I'm clarifying that you don't have to think about types to get the semantics/precision. You just want to think about types, can't help thinking about types, or something else, you tell me.)