【发布时间】:2012-05-07 12:15:18
【问题描述】:
记录和元组之间有什么不只是句法上的区别吗?
有性能差异吗?
元组和记录的实现是否相同?
您是否有可以使用元组但不能使用记录来完成的事情的示例(以及 反过来)?
【问题讨论】:
-
是什么导致了这样的问题?它们适用于不同的应用程序。我不会担心现阶段的表现。实现并不“相同”,因为……它们是不同的东西。
-
如果它们是不同的东西,那么您是否有可以使用元组但不能使用记录(反之亦然)完成的事情的示例?我问这个问题是因为你说的不同的两件事在我看来很相似。
-
定义“可以完成”。原谅那种傲慢的语气,但任何事情都可以用图灵机完成。记录只是提供更容易的访问,即您不需要为了获得一个元素而解构整个事物。它们具有更好的文档记录,并且更易于访问,允许使用
mutable关键字和<-语法更轻松地更新引用。 -
我的意思是,你会同意列表和元组是不同的,对吧?但是,如果您很傻,它们可以相同地使用。
-
@Len:那是苹果和橘子。托马斯的问题是完全有效的。类型理论上,元组和记录都只是产品类型(一个未标记,另一个标记,但这是一个相对较小的差异),具有恒定的宽度但异构组件。 OCaml 两者兼有(加上对象类型作为产品的第三种形式)确实有点多余。然而,列表是递归和类型,具有未指定的长度但同质组件,因此完全不同。
标签: ocaml