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
。