programming-languages - 什么是关系参数?

标签 programming-languages

一个听起来很复杂的术语,简单的谷歌搜索没有很好的解释......还有更多以学术为导向的人可以解释这个吗?

最佳答案

这两个答案大多是正确的。我会说参数性是多态性的一个可能属性。如果多态项在所有实例化下的行为都相同,则多态性是参数化的。 “表现相同”是一个模糊的、直观的术语。 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/

相关文章:

c# - 在嵌入式 Linux 上编程的最佳语言

perl - Perl 提供了哪些其他语言没有的编译时功能?

artificial-intelligence - IDA* 有 15 个拼图,需要帮助

c - 在创建 "stand alone"编译器时遇到困难

php - 可用于编程的最有值(value)的认证是什么?

architecture - 成为优秀的技术架构师需要具备哪些条件

java - 垃圾回收仅用于回收堆对象还是同时回收堆和堆栈中的对象?

c# - 禁止现有类的接口(interface)实现有什么好处吗?

oop - 初学者 OOP 问题

programming-languages - 区分大小写与强类型语言(或松散类型语言)有什么关系吗?