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

'())

lisp实战文库_LISP编程举例相关推荐

  1. lisp实战文库_lisp编程实例

    lisp 编程实例 Visual LISP 编程应用实例集 一. 计算类程序 1. 计算阶剩值 n! ( 注意 : 采用了递归方式 ) (defun jsen (n) (if (= n 0) 1 (* ...

  2. lisp实战文库_autolisp教程pdf

    AutoCAD高级培训教程之二 AutoCAD应用开发第三部分 AutoLISP基本函数 3 AutoLISP基本函数 ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3.1 赋值函数 3.2 ...

  3. lisp实战文库_AutoLISP基础入门案例,很受用-推荐下载

    语法简单 不用特殊的变量宣告 , 非常富有弹性 , 比起其它的程序语言 , 它的语法可 说是非常简单而有其独特的风格 ! 功能函数 强大 除一般性的功能函数外 , 又拥有为数不少控制配合 AutoCA ...

  4. Python实战之多线程编程thread模块

    Python实战之多线程编程thread模块 在Python中除了可以通过继承threading.Thread类来实现多线程外,也可以调用thread模块中的start_new_thread()函数来 ...

  5. Python实战之多线程编程threading.Thread

    Python实战之多线程编程threading.Thread 在Python中可以使用继承threading.Thread类来实现多线程编程,其中子类可以重写父类的__init__和run方法来实现用 ...

  6. 实战Linux Bluetooth编程

    实战Linux Bluetooth编程(一) 协议栈概述 Sam一年前在Linux下写了一个类似Windows下BTW的库--BTX.现在需要添加新功能时发现很多知识点都忘记 了.所以决定在这次学习中 ...

  7. Java编程兵书,在实战中体会编程的快乐,初学和自学者的福音

    前言 Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 面向对象程序设计语言和 Java 平台的总称.由 James Gosling和同事们共同研发,并在 ...

  8. 单片机位寻址举例_mcs51单片机位操作指令及编程举例

    mcs51 单片机位操作指令及编程举例 MCS-51 单片机的硬件结构中,有一个位处理器(又称布尔处理器),它有 一套位变量处理的指令集.在进行位处理时, CY (就是我们前面讲的进位位) 称位累加器 ...

  9. 单片机零基础入门(9-1)实战:模块化编程(模块化两个案例含源码--以及无法显示头文件(.h)的解决方案)

    单片机零基础入门(9-1)实战:模块化编程-(以及无法显示头文件(.h)的解决方案) 本文作为单片机零基础入门(8-5)模块化编程的拓展和补充,比前面的单片机零基础入门(8-5)模块化编程更为详细. ...

最新文章

  1. asp.net 2.0中设定默认焦点按钮
  2. AjaxControlToolkit中CalendarExtender日历控件的用法
  3. Linux驱动编程 step-by-step (十) Linux 内核链表
  4. Python第二天学习
  5. python抢票代码_GitHub标星超12K,抢票神器大更新,支持候补
  6. go给Linux安装mysql_Linux安装MySQL-Go语言中文社区
  7. video downloadhelper 无时间限制_如何避免背景音乐侵权?自媒体和vlog必备的七大无版权背景音乐网...
  8. 计算机485通讯原理图,485通讯接线图.pdf
  9. Java打印的几种方法
  10. bam文件读取_sam和bam文件处理
  11. 华为路由器ip地址和mac地址绑定命令
  12. qml自定义控件:简易的带图标按钮
  13. 回顾百度企业竞争情报系统
  14. 盲人怎么用计算机打字,盲人打字键盘指法练习技巧和方法
  15. 一分钟教程:绘制中国地图
  16. Java面试题大全(2021版)
  17. 百度paddleOcr安装与使用
  18. 怎么给证件照换背景?教你一招快速更换证件照背景色
  19. 哈希表(散列表)——C++数据结构详解
  20. 计算机等级考试office和wps哪个好,ms office和wps office二级考试区别大吗?考哪个好一些?...

热门文章

  1. ​手把手教你如何进行 Golang 单元测试
  2. 一款 0 门槛轻松易上手的数据可视化工具
  3. [FFmpeg] ffmpeg 常用命令
  4. 腾讯分布式数据库DCCB
  5. 协调多个对象之间的交互——中介者模式
  6. GitHub--创建新的分支
  7. 根据这博客复习,我收到了BAT等大厂的技术岗offer
  8. 大剑无锋之面试问到了Kafka???【面试推荐】
  9. MySQL性能优化之必备技能【推荐】
  10. leetcode 449. Serialize and Deserialize BST | 449. 序列化和反序列化二叉搜索树(BST后序遍历性质)