接下来是摘录自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)。依次调用format参数t和的函数"Hello, World!~%"。该format函数根据给定的参数生成格式化的输出(有点像printfC中的高级版本)。第一个参数告诉它输出到哪里,t意思是标准输出。第二个参数告诉它要打印什么(以及如何解释任何其他参数)。指令(第二个参数中的特殊代码)指示~%格式以打印换行符(即在UNIX上可能会写\n在Windows上\r\n)。格式通常会返回NIL(有点像NULL其他语言)。
在第二次提示后,我们看到Hello, World已打印,并在下一行返回的值是NIL。