Lisp - 函式



函式是由一組語句組成的,這些語句共同執行一項任務。

您可以將程式碼分成單獨的函式。如何將程式碼劃分到不同的函式中取決於您自己,但邏輯上,劃分通常是讓每個函式執行特定任務。

在LISP中定義函式

名為defun的宏用於定義函式。defun宏需要三個引數:

  • 函式名稱
  • 函式的引數
  • 函式體

defun的語法如下:

(defun name (parameter-list) "Optional documentation string." body)

讓我們用簡單的例子來說明這個概念。

示例

讓我們編寫一個名為averagenum的函式,它將列印四個數字的平均值。我們將把這些數字作為引數傳送。

建立一個名為main.lisp的新原始碼檔案,並在其中鍵入以下程式碼。

main.lisp

; define a function to get average of four numbers
(defun averagenum (n1 n2 n3 n4)
   (/ ( + n1 n2 n3 n4) 4)
)
; call the function and print the result
(write(averagenum 10 20 30 40))

輸出

執行程式碼時,它返回以下結果:

25

示例

讓我們定義並呼叫一個函式,當給出圓的半徑作為引數時,該函式將計算圓的面積。

建立一個名為main.lisp的新原始碼檔案,並在其中鍵入以下程式碼。

main.lisp

; define a function to caculate area of circle
(defun area-circle(rad)
   ;Calculates area of a circle with given radius
   ; terminate printing 
   (terpri)
   ; print the radius
   (format t "Radius: ~5f" rad)
   ; print the area
   (format t "~%Area: ~10f" (* 3.141592 rad rad))
)
(area-circle 10)

輸出

執行程式碼時,它返回以下結果:

Radius:  10.0
Area:   314.1592

注意事項

請注意:

  • 您可以提供一個空列表作為引數,這意味著函式不接受任何引數,列表為空,寫成()。

  • LISP還允許可選引數、多個引數和關鍵字引數。

  • 文件字串描述了函式的目的。它與函式名稱相關聯,可以使用documentation函式獲取。

  • 函式體可以包含任意數量的Lisp表示式。

  • 函式體中最後一個表示式的值將作為函式的值返回。

  • 您還可以使用return-from特殊運算子從函式中返回值。

相關概念

讓我們簡要討論以上概念。點選以下連結查詢詳細資訊:

廣告