计算机科学

首页 > 计算机科学

ISWIM

2018-09-05 18:18:37     所属分类:程序设计语言
ISWIM
编程范型 指令式, 函数式
设计者 Peter J. Landin
发行时间 1966年
启发语言
ALGOL 60, Lisp
影响语言
ML, SASL, Lucid

ISWIM 是 Peter J. Landin 设计并描述于他在1966年于ACM通讯中出版的文章《The Next 700 Programming Languages》中的抽象计算机编程语言(或编程语言家族)。名称是如下首字母缩写“If you See What I Mean”。

尽管没有实现,它被证明为在编程语言特别是函数式编程语言开发中非常有影响力的语言,比如 SASL,Miranda,ML,Haskell 和它们的后继者。

ISWIM 是带有由加了语法糖的 lambda 演算组成的函数式核心的指令式语言,它增加了(i)可变变量和赋值,(ii)强力控制机制 — Landin 的 J 算子,它能够捕获当前的续体(Scheme 的 call/cc 算子是简化版本的 Landin 的 J 算子)。因为基于 lambda 演算,ISWIM 有高阶函数和词法辖域变量。

ISWIM 的操作语义是使用 Landin 的 SECD抽象机定义的,并且使用了传值调用因而是及早求值的。ISWIM 的目标之一就是看起来更像数学表示,所以 Landin 放弃了 ALGOL 的语句间分号和 begin ... end 块结构并把它们替代为越位规则和基于缩进的辖域。

ISWIM 的一个概念上的特色是使用了 where 子句。ISWIM 程序是由 where 子句(包括变量间等式的辅助定义),条件表达式和函数定义量化的一个单一表达式。与 CPL 一起,ISWIM 是最早使用 where 子句的语言之一。

显著的语义特征是有能力定义新数据类型为(可能递归的)乘积之和 - 这是使用了稍微冗余的自然语言风格描述来完成的,但是除了表示法之外完全等同于现代函数式语言中代数数据类型。ISWIM 变量没有明确的类型声明,Landin 好像(尽管在 1966 论文中没有明确的说)希望这个语言是动态类型的,像 LISP 而不像 ALGOL;但是也有可能他想要开发某种形式的类型推论。

没有尝试过 ISWIM 的直接实现,但 Art Evan 的 PAL 和 John Reynold 的 Gedanken 捕获了 Landin 的多数概念,包括强力控制转移操作。这两者都是动态类型的。Milner 的 ML 可以被认为等价于没有 J 算子和有类型推论的 ISWIM。

从 ISWIM 衍生出的另一个行列是去掉指令式特征(赋值和 J 算子)而留下纯函数式语言。接着就有可能切换到惰性求值。这条路导致了 SASL,Miranda 和 Haskell。

引用

  • P. J. Landin The Next 700 Programming Languages. CACM 9(3):157–65, March 1966.
  • Art Evans. PAL — a language designed for teaching programming linguistics. Proceedings ACM National Conference 1968.
  • J. C. Reynolds. GEDANKEN: a simple typeless language which permits functional data structures and co-routines. Argonne National Laboratory September 1969.
  • Mirjana Ivanović, Zoran Budimac. A definition of an ISWIM-like language via Scheme. ACM SIGPLAN Notices, Volume 28, No. 4 April 1993.

本条目部分或全部内容出自以GFDL授权发布的《自由线上电脑词典》(FOLDOC)。

参见

  • ALGOL 60
  • SASL
  • ML

版权声明:本文由北城百科网创作,转载请联系管理获取授权,未经容许转载必究。https://www.beichengjiu.com/computerscience/340558.html

显示全文

取消

感谢您的支持,我会继续努力的!

扫码支持
支付宝扫一扫赏金或者微信支付5毛钱,阅读全文

打开微信扫一扫,即可进行阅读全文哦


上一篇:IronPython
下一篇:架构描述语言
相关推荐
爱淘宝