一个听起来很复杂的术语,简单的谷歌搜索没有很好的解释......还有更多以学术为导向的人可以解释这个吗?
最佳答案
这两个答案大多是正确的。我会说参数性是多态性的一个可能属性。如果多态项在所有实例化下的行为都相同,则多态性是参数化的。 “表现相同”是一个模糊的、直观的术语。 John Reynolds 引入了关系参数化,作为对此的数学形式化。它指出多态项保留所有关系,这直观地迫使它表现得相同:
考虑 f: a list -> a list。
如果我们有关系 a~1, b~2, c~3, ...,那么我们可以将它提升到列表中,例如
[a, d, b, c] ~ [1, 4, 2, 3]
现在,如果 f([a, d, b, c]) = [c, b, d, a] 并且 f 保持关系,
然后 f([1, 4, 2, 3]) = [3, 2, 4, 1]。
换句话说,如果 f 反转字符串列表,它也会反转数字列表。
所以关系参数多态函数不能“检查类型参数”,因为它们不能根据类型改变它们的行为。
关于programming-languages - 什么是关系参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/280298/