- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
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 () ())tlisp入门(二)上一集我们讲了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)看到这里大家可能会问,为什么没有取表中除开头外其它某个位置上的元素的操作符,别急,等我们讲到地球人都知道的函数和递归你就知道该怎么办了,也许你现在已经想得差不多了?接下来要介绍给大家的是构成程序逻辑的一个基本功能……条件分支,在lisp中,它是由cond操作符完成的,cond是七个公理中最后一个也是形式最复杂的一个(欧几里德的最后一个公理也如是):(cond (p1 e1) (p2 e2)...(pn en))p1到pn为条件,e1到en为结果,cond操作符依次对p1到pn求值,直到找到第一个值为原子t(还记得吗?)的p,此时把对应的e作为整个表达式的值返回,例如: (cond ((eq a b) first)((atom a) second))second好了,至此我们已经有了lisp
您可能关注的文档
- 汽车电子控制技术案例分析.ppt
- 汽车发电机就车检测案例分析.ppt
- 汽车发动机电控技术教学下载-样章案例分析.ppt
- 汽车发动机控制技术案例分析.ppt
- (实验、有机、基本理论和元素化学)高三化学三轮复习(含)答案.doc
- (整理版)答案.doc
- :第2章第1讲答案.doc
- 汽车构造NO14案例分析.ppt
- :节能减排我们能做些什么答案.doc
- 1汽车地位答案.doc
- 书面表达之建议信(讲义)-中考英语一轮复习(含答案).pdf
- 中考历史复习小众题型类:填空题、改错题、判断题(70题).pdf
- 2024年吉林省县乡教师选调考试《教育学》真题汇编带解析必背【基础题】.pdf
- 2025年中考语文备考之《朝花夕拾》名著导读及考题.pdf
- 小说标题的含义和作用(模拟突破)-2025年中考语文考点突破之小说阅读(解析版).pdf
- 阅读理解之应用文(练习)-中考英语一轮复习(含答案).pdf
- 小说情节作用(模拟突破)-2025年中考语文考点突破之小说阅读(原卷版).pdf
- 小说段落作用(模拟突破)-2025年中考语文考点突破之小说阅读(解析版).pdf
- 小说段落作用(试题专练)-2025年中考语文考点突破之小说阅读(解析版).pdf
- 2025年上海市16区初三语文一模试题汇编之现代文阅读二(记叙文)学生版.pdf
文档评论(0)