ISWIM
ISWIM(如下首字母缩写“If you See What I Mean”),是的一种抽象的计算机编程语言(或编程语言家族),由Peter J. Landin设计,并描述在他1966年于ACM通讯发表的文章《The Next 700 Programming Languages》之中[1]。 尽管没有实现,它被证明为在编程语言开发中非常有影响力的语言,特别是对于函数式编程语言,比如ML、SASL、Miranda、Haskell和它们的后继者,还有数据流程编程语言如Lucid。 设计ISWIM具有由加了语法糖的lambda演算构成的函数式核心,它是增加了可变变量和赋值的指令式语言,并具有Landin的强力控制机制J算子,它能够捕获当前的续体(Scheme的call/cc算子有与之类似的功能)。因为基于了lambda演算,ISWIM具有高阶函数和词法作用域变量。 ISWIM的操作语义,使用Landin的SECD抽象机来定义,并且使用了传值调用,因而是及早求值的[2]。ISWIM的目标之一,就是要看起来更像数学表示,所以Landin放弃了ALGOL的语句间分号,和 ISWIM在表示法上的特色,是使用了 ISWIM的显著的语义特征,是有能力将新数据类型,定义为(可能递归的)乘积之和。这是使用稍显冗余的自然语言风格描述来完成的,但是除了表示法之外,完全等同于现代函数式语言中代数数据类型。ISWIM变量没有明确的类型声明,尽管在1966年论文中没有明确的说出来,Landin好像希望这个语言是动态类型的,像LISP而不像ALGOL;但是也有可能他想要开发某种形式的类型推论。 实现和派生没有进行过直接实现ISWIM的尝试,但Arthur Evans的PAL[3],和John C. Reynolds的Gedanken[4],获取了Landin的多数概念,包括强力的控制转移操作。这两者都是动态类型的。Milner的ML,可以被认为等价于没有J算子,而有类型推论的ISWIM。 从ISWIM衍生出的另一条路线,是去掉指令式特征(赋值和J算子)而留下纯函数式语言[5]。接着就有可能切换到惰性求值。这条路线导致了SASL、KRC、Hope、Miranda、Haskell、Clean。 引用
|
Portal di Ensiklopedia Dunia