程序结构
LISP表达式称为符号表达式或s表达式。 s表达式由三个有效对象,原子,列表和字符串组成。
任何s表达式都是有效的程序。
LISP程序可以在interpreter上运行,也可以作为compiled code.
解释器在重复循环中检查源代码,这也称为读取 - 评估 - 打印循环(REPL)。 它读取程序代码,对其进行评估,并打印程序返回的值。
一个简单的程序
让我们编写一个s表达式来找到三个数字7,9和11的总和。为此,我们可以在解释器提示符下键入。
(+ 7 9 11)
LISP返回结果 -
27
如果要运行与编译代码相同的程序,则创建名为myprog.lisp的LISP源代码文件,并在其中键入以下代码。
(write (+ 7 9 11))
单击“执行”按钮或键入Ctrl + E时,LISP立即执行它,返回的结果为 -
27
LISP使用前缀表示法
您可能已经注意到LISP使用prefix notation.
在上面的程序中,+符号作为数字求和过程的函数名称。
在前缀表示法中,运算符在其操作数之前写入。 例如,表达式,
a * ( b + c )/d
将写成 -
(/ (* a (+ b c) ) d)
让我们再举一个例子,让我们编写将60华氏度的华氏温度转换为摄氏度的代码 -
此转换的数学表达式将是 -
(60 * 9/5) + 32
创建名为main.lisp的源代码文件,并在其中键入以下代码。
(write(+ (* (/ 9 5) 60) 32))
单击“执行”按钮或键入Ctrl + E时,LISP立即执行它,返回的结果为 -
140
评估LISP计划
LISP计划的评估有两个部分 -
通过读者程序将程序文本翻译成Lisp对象
评估者程序根据这些对象实现语言的语义
评估过程采取以下步骤 -
读者将字符串转换为LISP对象或s-expressions.
评估器定义了从s表达式构建的Lisp forms语法。 第二级评估定义了一种语法,用于确定哪些s-expressions是LISP表单。
求值程序作为一个函数,将有效的LISP表单作为参数并返回一个值。 这就是我们将LISP表达式放在括号中的原因,因为我们将整个表达式/表单作为参数发送给赋值器。
'Hello World'计划
学习一门新的编程语言并没有真正起飞,直到你学会了用这种语言来问候整个世界,对吧!
因此,请创建名为main.lisp的新源代码文件,并在其中键入以下代码。
(write-line "Hello World")
(write-line "I am at 'IOWIKI'! Learning LISP")
单击“执行”按钮或键入Ctrl + E时,LISP立即执行它,返回的结果为 -
Hello World
I am at 'IOWIKI'! Learning LISP