Bad*_*Bad 11 data-structures codata
有一些解释在这里.直观地,我理解有限数据结构与流等无限数据结构的区别.然而,看到有关差异,特征,类型的其他解释是有趣的.
在阅读关于溪流的时候,我偶然发现了一些术语.
pyo*_*yon 17
这个答案并不十分准确,但无论如何我都会发布它.
......介于数据和计算之间.
数据的基本属性是它具有结构.数据可以作为输入传递,并通过计算作为输出返回.数据结构可以通过计算使用.但是,数据本身并没有做任何事情.数据就是.
的实例的数据类型是布尔值,数字,字符串,代数数据类型(标签联合)等.相应地,示例值是false,2,"pyon",SOME 2.计算操作值是有意义的:例如,计算可以分支,具体取决于数字是偶数还是奇数.但是,询问值可以做什么是没有意义的:数字2不能做任何事情,它只是.
计算的基本属性是它们具有行为.换句话说,计算可以.但是,计算"太活跃"而无法传递或存储在变量中.例如,您无法在变量中存储打印"Hello,world!"的行为.到屏幕.
您可能反对在变量中存储对函数的引用.但是对函数的引用与函数执行时的行为并不完全相同!前者是数据,后者是计算.
什么是codata?在给出正确的定义之前,我将使用一个例子:
流是codata
什么是流?流是计算的引用1,当执行时,产生以下任一项:
序列的第一个元素("头部"),以及逻辑上是序列其余部分的另一个流("尾部").要么...
一个特殊符号("nil"),表示序列的结束.
流(以及更一般地说,codata)是数据,因为它们是对计算的引用,而不是计算本身.然而,使流(以及更一般地说,codata)特殊的原因在于,当执行基础计算时,它们可以产生其他流(更一般地,codata).
现在我终于可以给出一个正确的定义:
Codata是对计算的引用,当执行时,可以产生(除此之外)更多的codata.
1正确的技术术语是"thunk",而不是"reference".