【发布时间】:2011-06-03 15:32:14
【问题描述】:
为什么following LINQ syntax(有时称为“查询”语法)称为“理解”语法?什么被理解(肯定是错的)?或者,全面代表什么(也许我现在走在正确的轨道上)?
【问题讨论】:
为什么following LINQ syntax(有时称为“查询”语法)称为“理解”语法?什么被理解(肯定是错的)?或者,全面代表什么(也许我现在走在正确的轨道上)?
【问题讨论】:
它来自许多语言都遵循的更多与语言无关的术语List Comprehension。历史显然是:
SETL 编程语言(1960 年代后期)具有集合形成构造,计算机代数系统 AXIOM(1973)具有类似的处理流的构造,但 第一次使用术语“理解”来表示此类构造出现在 Rod Burstall 和 John Darlington 从 1977 年开始对其函数式编程语言 NPL 的描述中。
FOLDOC 也大多与此相呼应:
根据 Rishiyur Nikhil 的注释(1992 年 8 月),该术语本身似乎是由 Phil Wadler 大约在 1983-5 年创造的,尽管编程结构本身可以追溯到更远的地方(很可能是 Jack Schwartz 和 SETL 语言)。
“列表理解”一词出现在下面的参考资料中。
最早提到该符号的是 Rod Burstall 和 John Darlington 对他们的语言 NPL 的描述。
[“The OL Manual”Philip Wadler、Quentin Miller 和 Martin Raskovsky,可能是 1983-1985]。
[“如何用成功列表替换失败”FPCA 1985 年 9 月,法国南希,第 113-146 页]。
【讨论】:
【讨论】:
我认为这篇论文可以阐明http://dl.acm.org/citation.cfm?id=181564 即他们争论并定义(我认为)什么是理解语法。它是 1994 年发布的,可能它影响了 LINQ 的设计理念。
【讨论】:
作为 .NET 开发人员,我对术语 linq 理解语法的理解是,它允许您以熟悉的样式查询语言编写 linq。随着人们对 linq 理解的提高,他们可能会转向 .NET 中所谓的扩展方法语法,这也是 .NET 编译器在编译时解释 linq 的方式。
【讨论】:
由于术语“comprehension”和“comprehensive”在英语中经常用于表示“整体”和“完整性”,因此理解语法的一个含义可能是一种语法,它允许构建能够生成的表达式“包含所有值”(理解)的值集,这些值尊重这些表达式所表达的规则。
另一个含义可能与从某个指定集合开始的值子集(列表)的生成更相关,因此属于起始集合并且它“包含”在原始集合中的值子集。出于这个原因,理解性 sintax 可能是编程语言构造的 sintax,它可以生成包含在指定原始集合中的子集值。
【讨论】: