LISP笔记(第一章 列表正理)

1.1 LISP列表

1.1.1 LISP 原子

在一个列表中,原子是由空格分隔的。原子可以紧接着括号。

原子和列表的书面表示被称为符号表达式,或叫S-表达式。

双引号的文本,不论是句子还是段落,都是一个原子。

'(this list includes "text between quotation marks.")

1.1.2 列表中的空格

列表中空格的数量无关紧要。下面的两种写法一致。

'(this list

looks like this)

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

'(this list looks like this)

1.2 运行一个程序

LISP中的列表,都是一个准备运行的程序。

运行它,计算机完成三件事情:

  • 只返回列表本身
  • 告诉你一个出错消息
  • 将列表中第一个符号当做一个命令,然后执行这个命令

单引号“’”,叫作一个引用(quote),当单引号位于一个列表之前时,

它告诉LISP不要对这个列表做任何操作,而是按其原样。

如果在列表前没有这样一个单引号,那么列表里的第一个原子就是操作符了,

在LISP里,这个命令叫做函数。比如(+ 2 2),就是后续两个数字相加。

运行:

在Emacs里,把光标移到这个列表的右括号后面,按下C-x C-e

结果会显示在Emacs的最下面的小BUFFER里,

如果按下C-j 其结果会直接输出在该列表的下一行。

1.6 求值

求值的时候是从内面的列表,向外求值。

比如:

(+ 2 (+ 3 3))

8

它会先把内部的列表求值后,再求外面的列表的值。

1.7 变量

一个符号可以同时具有一个函数定义和一个值。这两者是各自独立。

可以把光标移到符号的后面,用C-x C-e进行求值。

比如(+ 2 2),可以在右括号后面求值,那是使用了+的函数定义。

但是如果光标移到+后面求值,会报错,因为+当前没有绑定变量值。

1.8 参量

(+ 2 2)

后面的两个2称为+函数的参量。用来传递给函数的信息。

1.8.1 参量的数据类型

字符串参量:

(concat "abc" "def")

数字参量:

(substring "The quick brown for jumped." 16 19)

1.8.2 作为变量和列表的值的参量、

(+ 2 fill-column)

(concat "The " (+ 2 fill-column) " red foxes")

1.8.3 参量的个数

(+)

(*)

可以有多个参量

(message "The value of fill-column is %d." fill-column)

1.9 给一个变量赋值

使用set函数

(set 'flowers '(rose violet daisy buttercup))

使用setq函数

(setq flowers '(rose violet daisy buttercup)

        herbivores '(gazelle antelope zebra))

比较:setq是set函数的加强,因为它后面的第一个参量,也就是要赋值的变量不用加单引号。

同时, setq还可以同是批量完成赋值操作。

计数的例子:

(setq counter 0)

(setq counter (+ counter 1))

counter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值