LISP - 程序结构

  • 简述

    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 o F的华氏温度转换为摄氏温度的代码 -
    此转换的数学表达式为 -
    
    (60 * 9 / 5) + 32
    
    创建一个名为 main.lisp 的源代码文件并在其中键入以下代码。
    
    (write(+ (* (/ 9 5) 60) 32))
    
    单击执行按钮或键入 Ctrl+E 时,LISP 会立即执行并返回结果:
    
    140
    
  • LISP 程序的评估

    LISP 程序的评估有两个部分 -
    • 阅读器程序将程序文本翻译成 Lisp 对象
    • 通过评估程序根据这些对象实现语言的语义
    评估过程采取以下步骤 -
    • 阅读器将字符串翻译成 LISP 对象或s-expressions.
    • 求值器定义 Lisp 的语法forms是从 s 表达式构建的。第二级评估定义了一种语法,用于确定哪个s-expressions是 LISP 形式。
    • 评估器作为一个函数工作,它将有效的 LISP 形式作为参数并返回一个值。这就是我们将 LISP 表达式放在括号中的原因,因为我们将整个表达式/形式作为参数发送给计算器。
  • “Hello World”程序

    学习一门新的编程语言并没有真正起飞,直到你学会如何用该语言迎接整个世界,对吧!
    因此,请创建名为 main.lisp 的新源代码文件并在其中键入以下代码。
    
    (write-line "Hello World")
    (write-line "I am at 'JC2182'! Learning LISP")
    
    当您单击执行按钮或键入 Ctrl+E 时,LISP 会立即执行它,返回的结果是 -
    
    Hello World
    I am at 'JC2182'! Learning LISP