The 维基百科文章关于效果系统 http://en.wikipedia.org/wiki/Effect_system目前只是一个简短的存根,我有一段时间想知道什么是效果系统。
- 除了类型系统之外,是否还有其他语言还具有效果系统?
- 可能的(假设的)符号是什么主流您熟悉的语言、外观和效果吗?
“类型和效果系统”不仅描述了程序中值的种类,还描述了这些值的变化。 “Typestate”检查是一个相关的想法。
一个例子可能是跟踪文件句柄的类型系统:而不是具有函数close
带返回类型void
,类型系统会记录effect of close
作为文件资源的处置——调用后任何读取或写入文件的尝试close
将成为类型错误。
我不知道主流编程语言中出现过任何类型和效果系统。它们已用于定义静态分析(例如,根据效果定义正确锁定/解锁的分析是很自然的)。因此,效果系统通常是使用推理方案而不是具体语法来定义的。你可以想象语法看起来像
File open(String name) [+File]; // open creates a new file handle
void close(File f) [-f] ; // close destroys f
如果您想了解更多信息,以下论文可能会很有趣(公平警告:这些论文非常理论化)。
-
原子性类型:Java 的静态检查和推理 http://slang.soe.ucsc.edu/cormac/papers/atomic-toplas.pdf。弗拉纳根、弗洛因德、利普辛和卡德尔。
-
在低级软件中实施高级协议 http://research.microsoft.com/~maf/Papers/pldi01.pdf。罗伯特·德莱恩和曼努埃尔·范德里奇。
-
类型和效果系统 http://www.cs.ucla.edu/~palsberg/tba/papers/nielson-nielson-csd99.pdf。尼尔森和尼尔森。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)