(译)Scheme简明教程1-序及进入Scheme编程

(译)Scheme简明教程1-序及进⼊Scheme编程
Scheme简明教程
序⾔:
这是⼀份Scheme编程语⾔的⼊门教程。旨在作为⼀份快速上⼿指南,以便初学者在步⼊更⼴更深的正式课程前可以获取该语⾔上⼿所需的应⽤知识(⼊门后,请读者更深⼊的学习Scheme)。
本教程将引导读者写出简明实⽤的Scheme代码。尽管不会覆盖到Scheme语⾔的⽅⽅⾯⾯,但我们也不会避开这门语⾔中的很有⽤处但让⼈觉得难理解、⽣涩、罕见、不标准、甚⾄奇怪的部分。⽐如call-with-current-continuation、系统接⼝和多样化的⽅⾔等。我们会基于解决问题来做⼀些讨论,但不会是单纯的探索⾼深的纯语⾔理论。我因此删除了许多经典的Scheme指南。所以本教程不会出现深层次的教学⽅法、不会详细的关注Scheme语义、没有元数据解释、没有对深层次的实现的讨论、也没有对Scheme语⾔优点的评价。这并不是说这些内容不重要,但它们对想快速上⼿的初学者来说没有实际意义。
到底能够有多快?我不确定是否有⼈能够在三周时间内⾃学完Scheme,但我确实听说了Scheme的⼊门应该只需要半天的⼯
夫。Scheme标准⼿册,虽然很细⾄完备,但也只不过只有50页。最终在某个下午,你会完全理解Scheme和它的标准,但在那之前没有⼈会知道需要度过多少个让⼈觉得满头雾⽔的下午。希望读者能尽快领悟,这就是我的简明教程。
Acknowledgment: Matthias Felleisen , Matthew Flatt (鸣谢部分翻译省略)
开发环境:译者⽤的是⼤学的STK环境,可在附属⽂件中查。
第⼀章进⼊Scheme编程
按惯例,我们总是以⼀个可以输出”Hello, World!”字符串的控制台程序开始。打开你最习惯的⽂本编辑器,⽤以下内容创建⼀个名
为hello.scm的⽂件:
;The first program
(begin
(display"Hello, World!")scm文件
(newline))
第⼀⾏是注释语句,当Scheme遇到⼀个分号,它将忽略该分号以及这⼀⾏分号之后的语句。
begin是Scheme中⼀种⽤来标明语句段开始的语句。这个语句段中有两个⼦语句段。第⼀段调⽤了display过程来向控制台输出它的参数(“Hello, World!”字符串)。它后⾯调⽤newline过程输出⼀个回车换⾏。
要运⾏这段程序,⾸先得启动你的Scheme。通常在操作系统的命令运⾏窗⼝直接输⼊执⾏Scheme环境启动程序就可以了。⽐如,只要在命令窗⼝中输⼊运⾏mzscheme就可以了。(如果是STK-Win32 ,只需要双击运⾏MS-Win32下的相应bat⽂件就⾏了)
这将启动Scheme的命令提⽰⾏程序,它将读取你的输⼊并执⾏,然后会将结果打印在命令窗⼝上,再等待接程序的输⼊。由此我们通常称之为输⼊-执⾏-打印循环。这和操作系统的命令⾏提⽰没什么区别,它也是读取你的命令并执⾏,然后再等待更多的命令被输⼊。就像操作系统的命令提⽰⾏⼀样,Scheme的命令⾏有它⾃⼰的提⽰符,通常是 > 符号,也可能是其它类似符号。
在Scheme命令提⽰符后输⼊命令加载hello.scm⽂件。在提⽰符后输⼊:
(load"hello.scm")
Scheme将执⾏hello.scm⽂件中的程序,输出Hello, World!和回车换⾏。之后⼜会回到命令提⽰符,等待新输⼊。
有这样⼀个勤劳的命令提⽰⾏,你没有必要总是把程序写到⽂件再加载。有时候可以更简单⼀些,尤其是当你在分析代码的时候,可以直接在命令提⽰符后直接输⼊表达式来查看结果。⽐如直接在命令提⽰符输⼊
(begin (display"Hello, World!")
(newline))
马上在提⽰符后得到输出结果。
Hello, World!
实际上你可以更简单的直接在命令⾏中输⼊”Hello, World!”字符串,然后你可以⽴刻得输出的字符串结果,
"Hello, World!"
因为命令⾏会马上运算字⾯量 "Hello, World!" 得到 "Hello, World!"。(注意结果有双引号)
除了第⼆种⽅式产⽣的结果具有双引号外,两段程序还有⼀个标志性的区别。第⼀段(⽤begin开头的)并没有做任何的运算,⽽显⽰的结果是display和newline过程的副作⽤向标准输出写出来的。第⼆段程序,"Hello, World!"运算得到的结果在这个情况下和这个字符串本⾝是⼀致的。
以后,我们会使⽤标记 => 来表⽰运算。就像这样 E => v 表⽰语句段E 运算得到结果值为v。例如,
(begin
(display"Hello, World!")
(newline))
=>
(没有结果),尽管它有输出 Hello, World!到标准输出的副作⽤。⽽另⼀个程序段,
"Hello, World!"
=>"Hello, World!"
在上⾯两种代码情况下,我们运⾏完后还是停在命令提⽰符后。如果要退出Scheme,输⼊
(exit)
代码段,这样会退出Scheme命令⾏。
Scheme命令⾏⾮常便于交互式的测试程序和程序⽚段。然⽽这绝不是必须的。你当然可以坚持传统的⽅式完全在⽂件中来创建程序,然后⽤Scheme来执⾏它们但并不使⽤任何明显的命令⾏。在MzScheme中,例如你可以在操作系统的命令⾏中这样输
mzscheme –r hello.scm
这样不需要和Scheme命令⾏打交道就可以产⽣问候的结果了。在问候结果产⽣后,mzscheme将会退回操作系统的命令提⽰。这⼏乎就像是你直接写了echo Hello , World!
你甚⾄可以把hello.scm当成是⼀个系统命令来看待(⼀个内核脚本或批处理⽂件),但具体得等到第⼗六章来讲解。
译:heros

本文发布于:2024-09-24 11:22:02,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/382277.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:结果   命令   程序   没有   不会   输出   语句
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议