fbpx
维基百科

ISWIM

ISWIM(如下首字母缩写“If you See What I Mean”),是的一种抽象的计算机编程语言(或编程语言家族),由Peter J. Landin设计,并描述在他1966年于ACM通讯发表的文章《The Next 700 Programming Languages》之中[1]

ISWIM
编程范型指令式, 函数式
設計者Peter J. Landin
发行时间1966年,​57年前​(1966
啟發語言
ALGOL 60, Lisp
影響語言
ML, SASL, Lucid

尽管没有实现,它被证明为在编程语言开发中非常有影响力的语言,特别是对于函数式编程语言,比如MLSASLMirandaHaskell和它们的后继者,还有数据流程编程语言如Lucid

设计

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

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

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

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

实现和派生

没有进行过直接实现ISWIM的尝试,但Arthur Evans的PAL[3],和John C. Reynolds英语John C. Reynolds的Gedanken[4],获取了Landin的多数概念,包括强力的控制转移操作。这两者都是动态类型的。MilnerML,可以被认为等价于没有J算子,而有类型推论的ISWIM。

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

引用

  1. ^ Landin, P. J. (PDF). Communications of the ACM (Association for Computing Machinery). March 1966, 9 (3): 157–165 [2021-08-28]. S2CID 13409665. doi:10.1145/365230.365257. (原始内容 (PDF)存档于2022-03-23). 
  2. ^ Gordon Plotkin英语Gordon Plotkin. (PDF) (Report). 1975 [2020-04-26]. (原始内容 (PDF)存档于2020-02-01). 
  3. ^ Arthur Evans. PAL: a language designed for teaching programming linguistics. Proceedings ACM National Conference. ACM National Conference. Association for Computing Machinery. 1968. 
    A. Evans. (PDF) (Report). Department of Electrical Engineering, Massachusetts Institute of Technology. February 1968 [2021-09-09]. (原始内容 (PDF)存档于2022-03-06). 
    A. Evans. (PDF) (Report). February 1968 [2021-09-10]. (原始内容 (PDF)存档于2022-03-06). 
    J. M. Wozencraft, A. Evans. (PDF). M.I.T. Department of Electrical Engineering. 1971 [2021-09-11]. (原始内容 (PDF)存档于2022-03-06). 
  4. ^ John C. Reynolds英语John C. Reynolds. (PDF) (Report). Argonne National Laboratory. September 1969 [2021-09-09]. (原始内容 (PDF)存档于2021-09-09). 
    John C. Reynolds英语John C. Reynolds. Definitional interpreters for higher-order programming languages. ACM '72: Proceedings of the ACM annual conference - Volume. August 1972 [2022-11-19]. doi:10.1145/800194.805852. (原始内容于2022-11-27). 
  5. ^ Ivanović, Mirjana; Budimac, Zoran. A definition of an ISWIM-like language via Scheme. ACM SIGPLAN Notices. April 1993, 28 (4): 29–38. S2CID 14379260. doi:10.1145/152739.152743. 

本條目部分或全部内容出自以GFDL授權發佈的《自由線上電腦詞典》(FOLDOC)。

iswim, 提示, 此条目的主题不是i, swim, 如下首字母缩写, what, mean, 是的一种抽象的计算机编程语言, 或编程语言家族, 由peter, landin设计, 并描述在他1966年于acm通讯发表的文章, next, programming, languages, 之中, 编程范型指令式, 函数式設計者peter, landin发行时间1966年, 57年前, 1966, 啟發語言algol, lisp影響語言ml, sasl, lucid尽管没有实现, 它被证明为在编程语言开发中非常有影响. 提示 此条目的主题不是I SWIM ISWIM 如下首字母缩写 If you See What I Mean 是的一种抽象的计算机编程语言 或编程语言家族 由Peter J Landin设计 并描述在他1966年于ACM通讯发表的文章 The Next 700 Programming Languages 之中 1 ISWIM编程范型指令式 函数式設計者Peter J Landin发行时间1966年 57年前 1966 啟發語言ALGOL 60 Lisp影響語言ML SASL Lucid尽管没有实现 它被证明为在编程语言开发中非常有影响力的语言 特别是对于函数式编程语言 比如ML SASL Miranda Haskell和它们的后继者 还有数据流程编程语言如Lucid 设计 编辑ISWIM具有由加了语法糖的lambda演算构成的函数式核心 它是增加了可变变量和赋值的指令式语言 并具有Landin的强力控制机制J算子 英语 J operator 它能够捕获当前的续体 Scheme的call cc 英语 call with current continuation 算子是Landin的J算子的简化版本 因为基于了lambda演算 ISWIM具有高阶函数和词法辖域变量 ISWIM的操作语义 使用Landin的SECD抽象机来定义 并且使用了传值调用 因而是及早求值的 2 ISWIM的目标之一 就是要看起来更像数学表示 所以Landin放弃了ALGOL的语句间分号 和begin end块结构 并把它们替代为越位规则 和基于缩进的辖域 ISWIM在表示法上的特色 是使用了where子句 ISWIM程序是一个单一表达式 它由where子句 包括变量间等式的辅助定义 条件表达式和函数定义所量化 与CPL一起 ISWIM是最早使用where子句的语言之一 ISWIM的显著的语义特征 是有能力将新数据类型 定义为 可能递归的 乘积之和 这是使用稍显冗余的自然语言风格描述来完成的 但是除了表示法之外 完全等同于现代函数式语言中代数数据类型 ISWIM变量没有明确的类型声明 尽管在1966年论文中没有明确的说出来 Landin好像希望这个语言是动态类型的 像LISP而不像ALGOL 但是也有可能他想要开发某种形式的类型推论 实现和派生 编辑没有进行过直接实现ISWIM的尝试 但Arthur Evans的PAL 3 和John C Reynolds 英语 John C Reynolds 的Gedanken 4 获取了Landin的多数概念 包括强力的控制转移操作 这两者都是动态类型的 Milner的ML 可以被认为等价于没有J算子 而有类型推论的ISWIM 从ISWIM衍生出的另一条路线 是去掉指令式特征 赋值和J算子 而留下纯函数式语言 5 接着就有可能切换到惰性求值 这条路线导致了SASL KRC Hope Miranda Haskell Clean 引用 编辑 Landin P J The Next 700 Programming Languages PDF Communications of the ACM Association for Computing Machinery March 1966 9 3 157 165 2021 08 28 S2CID 13409665 doi 10 1145 365230 365257 原始内容 PDF 存档于2022 03 23 Gordon Plotkin 英语 Gordon Plotkin Call by Name Call by Value and the Lambda Calculus PDF Report 1975 2020 04 26 原始内容 PDF 存档于2020 02 01 Arthur Evans PAL a language designed for teaching programming linguistics Proceedings ACM National Conference ACM National Conference Association for Computing Machinery 1968 A Evans PAL A Reference Manual and a Primer PDF Report Department of Electrical Engineering Massachusetts Institute of Technology February 1968 2021 09 09 原始内容 PDF 存档于2022 03 06 A Evans Appendix 2 1 The Complete Syntax for PAL PDF Report February 1968 2021 09 10 原始内容 PDF 存档于2022 03 06 J M Wozencraft A Evans Notes on Programming Linguistics PDF M I T Department of Electrical Engineering 1971 2021 09 11 原始内容 PDF 存档于2022 03 06 John C Reynolds 英语 John C Reynolds GEDANKEN a simple typeless language which permits functional data structures and co routines PDF Report Argonne National Laboratory September 1969 2021 09 09 原始内容 PDF 存档于2021 09 09 John C Reynolds 英语 John C Reynolds Definitional interpreters for higher order programming languages ACM 72 Proceedings of the ACM annual conference Volume August 1972 2022 11 19 doi 10 1145 800194 805852 原始内容存档于2022 11 27 Ivanovic Mirjana Budimac Zoran A definition of an ISWIM like language via Scheme ACM SIGPLAN Notices April 1993 28 4 29 38 S2CID 14379260 doi 10 1145 152739 152743 本條目部分或全部内容出自以GFDL授權發佈的 自由線上電腦詞典 FOLDOC 取自 https zh wikipedia org w index php title ISWIM amp oldid 75615741, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。