Hello World
以下是来自 Common Lisp 的 REPL 会话的摘录,其中包含 Hello World!
定义并执行函数。有关 REPL 的更全面说明,请参阅本页底部的备注。
CL-USER> (defun hello ()
(format t "Hello, World!~%"))
HELLO
CL-USER> (hello)
Hello, World!
NIL
CL-USER>
这定义了名为 hello
的零参数的函数,它将字符串 Hello, World!
写入后跟新行到标准输出,并返回 NIL
。
定义我们编写的函数
(defun name (parameters...)
code...)
在这种情况下,该函数称为 hello
,不带参数,它运行的代码是进行一次函数调用。来自 lisp 函数的返回值是要运行的函数中的最后一位代码,因此 hello
返回 (format t "Hello, World!~%")
返回的任何内容。
在 lisp 中调用函数,可以写入 (function-name arguments...)
,其中 function-name
是函数的名称,arguments...
是调用的参数列表(以空格分隔)。有一些特殊情况看起来像函数调用但不是,例如,在上面的代码中没有被调用的 defun
函数,它被特殊处理并定义了一个函数。
在 REPL 的第二个提示符下,在我们定义了 hello
函数之后,我们通过编写 (hello)
来调用它而没有参数。这又将使用参数 t
和 Hello, World!~%
调用 format
函数。format
函数根据给出的参数生成格式化输出(有点像 C 中 printf
的高级版本)。第一个参数告诉它输出到哪里,t
表示标准输出。第二个参数告诉它要打印什么(以及如何解释任何额外的参数)。指令(第二个参数中的特殊代码)~%
告诉格式打印换行符(即在 UNIX 上它可能会写入\n
并在 windows \r\n
上)。格式通常返回 NIL
(有点像 NULL
在其他语言中)。
在第二个提示后,我们看到 Hello, World
已被打印,在下一行,返回值为 NIL
。