apologies for poking old thread, perhaps someone will find useful if we will supplement it with explanation which helped me to get it:
You should be aware of that, even if you define multiple functions of the same arity (accept the same number of arguments), from outside world this is considered only one function. That means, you need to define function signature, and only this one should have type spec defined.