lisp语言cond和if套用_LISP语言入门(CLISP)

本文介绍了LISP语言的基本特性和数据结构,特别是S-表达式和递归的重要性。文章详细讲解了LISP中的基本函数,如CAR、CDR、CONS、ATOM、QUOTE等,并探讨了条件函数COND。此外,还提到了CLISP编译环境的使用和一些特定功能,如LET、DEFUN、&optional和&rest关键字。
摘要由CSDN通过智能技术生成

曾经翻译整理的一篇LISP语言的入门文章,与大家分享. (请勿转载)

----------------------------------------------------------------

熟悉人工智能语言LISP程序设计

LISP语言的特性:

LISP语言是过去所有现存语言中最接近函数式语言的一种语言。J.McCarthy在1960年提出的最初的LISP语言完全是函数型的,后来为改善在传统计算机上的执行效率,就在流行的LISP版本中,把非应用式特性加入了语言中。LISP语言具有如下特性:

LISP程序的通常形式是一串函数定义,其后跟着一串带有参数的函数调用,函数之间的关系只是在调用执行时才体现出来。LISP中没有语句概念,也没有分程序结构或其他语法结构。语言中的一切成分都是以函数的形式给出。

在纯LISP中只有很少几个原始函数,虽然现有的LISP系统已增加了大量的内部函数,但这些新增加的函数都可以用最初的原始函数来表示。

在LISP中,程序和数据在形式上是等价的。LISP的唯一数据结构是S-表达式(表),而程序本身也是用S-表达式写的,因此可以把程序当作数据来处理,也可以把数据当作程序来执行。

递归是LISP的基础,是语言的主要控制结构,它不像大多数程序设计语言那样以迭代(循环)作为主要控制结构。LISP的递归处理是基于递归定义的数据结构。

LISP的数据结构——S-表达式

LISP是一种适合于符号处理的语言,它与一般高级语言有着很大的不同。LISP处理的唯一对象是符号表达式。这种符号表达式又称S-表达式,这里S代表符号。因此,LISP程序是对符号表达式进行加工和处理的。

原子是S-表达式的最简单情况,它可分为符号原子和数原子。符号原子是以字母开头的字母数字串,可用来表示变量、常量和函数的名字等。数原子是一串数字,在其前面可冠以符号‘-’或‘+’,分别表示负数原子和正数原子。

S-表达式定义如下:

原子是S-表达式。

如果S1和S2是S-表达式,则(S1*S2)也是S-表达式。

我们把(S1*S2)称为S-表达式的点对表示,S1、S2分别称为S-表达式的头部和尾部。应该注意,这个定义是一个递归定义。

S-表达式的表表示法:

表表示法的一般形式为:(<

S-表达式>…<

S-表达式>)其中,每个可以为原子,也可以为表。例如,(A ( B C ) ( D )

)是表。表中有三个元素,即一个原子A,两外两个是表(B C)和( D

),叫做子表。不难看出,表的结构是嵌套的,定义是递归的。我们把最外层表中元素的个数定义为该表的长度。例如,表(

A ( B C ) ( D ) )的长度为3。表元素是按次序排的,所以表是有序的,比如( A B C )不同于( B C A).

在表表示法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值