lisp语言入门.pdfVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
lisp语言入门

Lisp 语言入门 Lisp 是一门历史悠久的语言,全名叫 LISt Processor ,也就是“表处理语言”,它是由John McCarthy 于 1958 年就开始设计的一门语言。和 Lisp 同时期甚至更晚出现的许多语言如 Algo 等如今大 多已经消亡,又或者仅仅在一些特定的场合有一些微不足道的用途,到现在还广为人知的恐怕只剩下了 Fortran 和 COBOL。但唯独 Lisp ,不但没有随着时间而衰退,反倒是一次又一次的焕发出了青春,从 Lisp 分支出来的 Scheme、ML 等语言在很多场合的火爆程度甚至超过了许多老牌明星。那么这颗常青树 永葆青春的奥秘究竟在哪里呢? 如果你只接触过 C/C++、Pascal 这些“过程式语言”的话, Lisp 可能会让你觉得十分不同寻常,首先吸 引你眼球(或者说让你觉得混乱的)一定是 Lisp 程序中异常多的括号,当然从现在的角度来讲,这种设计 的确对程序员不大友好,不过考虑到五六十年代的计算机处理能力,简化语言本身的设计在那时算得上是当 务之急了。 Lisp 的基本语法很简单,它甚至没有保留字(有些语言学家可能对这一点有异议,别怕,我听你们的),它 只有两种基本的数据,仅有一种基本的语法结构就是表达式,而这些表达式同时也就是程序结构,但是正如 规则最简单的围棋却有着最为复杂的变化一样,Lisp 使用最基本的语言结构定义却可以完成其它语言难于实 现的、最复杂的功能。 废话少说,现在我们就来看看Lisp 语言中的基本元素。 Lisp 的表达式是一个原子(atom)或 (list) ,原子(atom)是一个字母序列 ,如abc ;表是由零个或多个 达式组成的序列 ,表达式之间用空格分隔开,放入一对括号中,如 : abc () (abc xyz) (a b (c) d) 最后一个表是由四个元素构成的,其中第三个元素本身也是一个表。 正如算数表达式 1+1 有 2一样,Lisp 中的表达式也有 ,如果表达式e 得出 v ,我们说e 返回v。如 果一个表达式是一个表,那么我们把表中的第一个元素叫做操作符 ,其余的元素叫做自变量。 正如欧几里德的几何世界中有五个公理一样,我们在这里给出 Lisp 世界中的 7个公理(基本操作符): (quote x)返回x ,我们简记为x (atom x)当 x是一个原子或者空表时返回原子t ,否则返回空 ()。在 Lisp 中我们习惯用原子t 示真 ,而 用空 () 示假。 (atom a) t (atom (a b c)) () (atom ()) t 现在我们有了第一个需要求出自变量 的操作符 ,让我们来看看quote 操作符的作用——通过引用 (quote)一个表,我们避免它被求 。一个未被引用的表达式作为自变量 ,atom 将其视为代码 ,例如 : (atom (atom a)) t 反之一个被引用的表仅仅被视为 (atom (atom a)) () 引用看上去有些奇怪 ,因为你很难在其它语言中找到类似的概念 ,但正是这一特征构成了 Lisp 最为与众不 同的特点——代码和数据使用相同的结构来 示 ,而我们用quote 来区分它们。 (eq x y)当 x和 y 的值相同或者同为空表时返回t ,否则返回空 () (eq a a) t (eq a b) () (eq () ()) t 下一章 ,我们将讲解与 相关的操作符和条件操作符 ,以及Lisp 程序的基本元素——函数。 一集我们讲了 Lisp 世界七个公理的前三个 ,这一集我们接着讲剩下的四个。 首先是三个 操作 (car x)要求x是一个表,它返回x中的第一个元素 ,例如 : (car (a b)) a (cdr x)同样要求x是一个表,它返回x中除第一个元素之外的所有元素组成的表,例如 : (cdr (a b c)) (b c) (cons x y)要求y 是一个表,它返回一个表,这个表的第一个元素是 x ,其后是 y 中的所有元素 ,例如 : (cons a (b c)) (a b c) (cons a (cons b (cons c ()))) (a b c) 看到这里大家可能会问 ,为什么没有取表中除开头外其它某个位置上的元素的操作符 ,别急,等我们讲到地 球人都知道的函数和递归你就知道该怎么办了,也许你现在已经想得差不多了? 接下来要介绍给

文档评论(0)

牛X文档 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档