Currently, a tag address for:
def foo[A, B, C](a: A, b: B, c: C): Baz
Would create the tag address:
def \zsfoo[A, B, C](a: A, b: B, c: C): Baz
However, this means that if the user changes anything (even a: A -> aa: A) it would cause the address to become invalid. I feel this is too aggressive. Having such a strict tag allows for better precision (disambiguate between a foo with two params vs one with three) but more often than not, people don't have that many overloaded functions (or at least they shouldn't).
This "issue" also extends to case classes and others.
A possible solution is to use everything BUT the params. So the example above would return an address as:
Currently, a tag address for:
Would create the tag address:
However, this means that if the user changes anything (even
a: A->aa: A) it would cause the address to become invalid. I feel this is too aggressive. Having such a strict tag allows for better precision (disambiguate between afoowith two params vs one with three) but more often than not, people don't have that many overloaded functions (or at least they shouldn't).This "issue" also extends to case classes and others.
A possible solution is to use everything BUT the params. So the example above would return an address as: