科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Common Lisp语言快速入门

Common Lisp语言快速入门

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

以上内容已足以让你初步认识Common Lisp语言:通过你了解的内容,你可以编写出一些微型程序,对Lisp语言进行测试。请密切关注本系列的下一篇文章,到时我们将介绍Lisp独特的列表处理机制。

作者:开发者在线 来源:开发者在线 2007年8月3日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

REPL

REPL代表“阅读-评估-打印-循环”(Read-Evaluate-Print-Loop),它简单表示注释器的一个交互式提示符。你可以从这里输出一些简单的Lisp代码。如果你使用另一种注释器提示符,你可以在这里使用提示符作为计算器输出一些基本的数学表达式——但它不能正常运行。在CLISP中输入5*2不会返回任何有意义的结果:

[1]> 5 * 2

5

[2]>

5

[3]>

2

Lisp并非以那种方式运行,运算符,如“+”不是在数字之间,而是在数字前面,就好像它们是函数名称一样。因此,如果你想将REPL当作计算器使用,你必须输入:

[1]> (* 5 2)

10

[2]> (+ 1 2 3 4)

10

[3]> (+ (* 5 2) (* 10 3) (/ 100 4))

65

对你来说,理解这种用法可能更难一些,但它拥有一些优势:它便于编译器解析、它对所有函数和运算符都一样、它让你给函数添加尽可能多的自变量——例如,在上面的第二个例子中,你可以任意扩充加数,使得加法函数和总计函数完全一样。

另外你会注意到,函数名在括号内,而不像许多其它语言一样函数名在括号以外。这表示你要写(函数自变量)而不是函数(自变量)。

每个Lisp表达式会返回一个值,一个函数总是返回最后一个表达式的结果——即使是NIL,NULL在Java或C++中的对等值也是这样。因此在Lisp中显示“Hello World”相当简单:

[3]> "Hello World"

"Hello World"

如果你希望在屏幕上打印一些内容,并返回其它内容,你应该使用打印函数:

[4]> (print "Hello World")

"Hello World"

"Hello World"

这个字符串显示两次,一个是打印结果,一个是函数返回的结果。

Lisp表示LIST Processor(列表处理器),Lisp中的几乎所有内容都以列表的形式存在,因此有时你必须处理列表。定义列表非常容易:

[5]> (list 1 2 3 4 5)

(1 2 3 4 5)

[6]> '(1 2 3 4 5)

(1 2 3 4 5)

第二种定义方法叫做引用,除定义简单的列表外,它还有更多用途,不过我们必须在后面的另一篇文章中讨论那个主题。

控制流程

Lisp拥有全部标准控制流程方法。定义一个重复一个值的简单循环相当容易:

[7]> (dotimes (i 10) (print i))0

1

2

3

4

5

6

7

8

9

NIL

同样,重复一个列表也很简单:

[8]> (dolist (i '(0 1 2 3 4 5 6 7 8 9)) (print i))

0

1

2

3

4

5

6

7

8

9

NIL

以上两个函数都是DO函数的特殊版本,它就像在其它语言中组合使用while和for函数一样。它由三个部分组成:循环变更定义、终止条件和语句主体:

[9]> (do ((i 0 (+ 1 i))) ((> i 10)) (print i))

0

1

2

3

4

5

6

7

8

9

10

NIL

在这个例子中,变更定义部分为((i 0 (+ 1 i))),它定义变量i为0,并在每次循环时调用函数(+ 1 0)。终止条件为((> i 10)),表示在i大于10时函数终止运行。最后主体部分打印i的值。

Lisp中也有条件函数,最基本的条件函数为if函数:

[10]> (if (> 10 20) (print "Hello") (print "World"))

"World"

"World"

if函数由三部分组成:条件、then语句和else语句。如果条件为真,则执行then语句,否则就执行else语句。

你可能已经注意到,到现在为止我们仅使用了单个的语句——但如果你需要把几个语句连接在一起,那该怎么办呢?在Lisp中,要将几个语句连接起来,你需要使用progn这个特殊的控制流程函数:

[11]> (progn (print "Hello") (print "World"))

"Hello"

"World"

"World"

例如,上例允许你在条件函数和循环中使用几个语句。

好了,以上内容已足以让你初步认识Common Lisp语言:通过你了解的内容,你可以编写出一些微型程序,对Lisp语言进行测试。请密切关注本系列的下一篇文章,到时我们将介绍Lisp独特的列表处理机制。

责任编辑:德东

查看本文国际来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章