LISP - 程序结构

LISP 表达式称为符号表达式或 s 表达式。 s-表达式由三个有效对象、原子、列表和字符串组成。

任何 s 表达式都是有效的程序。

LISP 程序可以在解释器上运行,也可以作为编译代码运行。

解释器在重复循环中检查源代码,这也称为读取-评估-打印循环(REPL)。 它读取程序代码,对其进行计算,然后打印程序返回的值。

一个简单的程序

让我们编写一个 s 表达式来求三个数字 7、9 和 11 的和。为此,我们可以在解释器提示符下键入。

(+ 7 9 11)

LISP 返回结果 −

27

如果您想运行与编译代码相同的程序,请创建一个名为 myprog.lisp 的 LISP 源代码文件,并在其中键入以下代码。

(write (+ 7 9 11))

当你点击执行按钮,或者输入Ctrl+E,LISP立即执行,返回结果为 −

27

LISP 使用前缀表示法

您可能已经注意到,LISP 使用前缀表示法。

在上面的程序中,+符号充当数字求和过程的函数名称。

在前缀表示法中,运算符写在操作数之前。 例如,表达式,

a * ( b + c ) / d

将被写成 −

(/ (* a (+ b c) ) d)

再举一个例子,让我们编写代码将 60o F 的华氏温度转换为摄氏度 −

此转换的数学表达式为 −

(60 * 9 / 5) + 32

创建一个名为 main.lisp 的源代码文件,并在其中键入以下代码。

(write(+ (* (/ 9 5) 60) 32))

当你点击执行按钮,或者输入Ctrl+E,LISP立即执行,返回结果为−

140

LISP 程序评估

LISP 程序的评估分为两部分 −

  • 由阅读器程序将程序文本翻译成 Lisp 对象

  • 通过评估程序根据这些对象实现语言语义

评估过程分为以下步骤 −

  • 阅读器将字符串翻译为 LISP 对象或 s 表达式。

  • 求值器定义了从 s 表达式构建的 Lisp 形式的语法。 第二级求值定义了一种语法,用于确定哪些 s-表达式 是 LISP 形式。

  • 求值器作为一个函数工作,它采用有效的 LISP 形式作为参数并返回一个值。 这就是我们将 LISP 表达式放在括号中的原因,因为我们将整个表达式/形式作为参数发送给求值器。

"Hello World"程序

只有学会如何用该语言迎接整个世界,学习一门新的编程语言才算真正成功,对吧!

因此,请创建名为 main.lisp 的新源代码文件并在其中键入以下代码。

(write-line "Hello World")

(write-line "I am at 'Tutorials Point'! Learning LISP")

当你点击执行按钮,或者输入Ctrl+E,LISP立即执行,返回结果为 −

Hello World

I am at 'Tutorials Point'! Learning LISP