LISP-関数

関数は、一緒にタスクを実行するステートメントのグループです。

コードを個別の関数に分割できます。コードをさまざまな関数にどのように分割するかはあなた次第ですが、論理的には通常、各関数が特定のタスクを実行するように分割されます。

LISPでの関数の定義

名前の付いたマクロ defun関数を定義するために使用されます。ザ・defun マクロには3つの引数が必要です-

  • 関数の名前
  • 関数のパラメーター
  • 関数の本体

defunの構文は次のとおりです。

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

簡単な例で概念を説明しましょう。

例1

4つの数値の平均を出力するaveragenumという名前の関数を書いてみましょう。これらの番号をパラメータとして送信します。

main.lispという名前の新しいソースコードファイルを作成し、その中に次のコードを入力します。

(defun averagenum (n1 n2 n3 n4)
   (/ ( + n1 n2 n3 n4) 4)
)
(write(averagenum 10 20 30 40))

コードを実行すると、次の結果が返されます-

25

例2

円の半径が引数として与えられたときに円の面積を計算する関数を定義して呼び出しましょう。

main.lispという名前の新しいソースコードファイルを作成し、その中に次のコードを入力します。

(defun area-circle(rad)
   "Calculates area of a circle with given radius"
   (terpri)
   (format t "Radius: ~5f" rad)
   (format t "~%Area: ~10f" (* 3.141592 rad rad))
)
(area-circle 10)

コードを実行すると、次の結果が返されます-

Radius:  10.0
Area:   314.1592

注意してください-

  • 空のリストをパラメーターとして指定できます。つまり、関数は引数を取りません。リストは空で、()と記述されます。

  • LISPでは、オプションの複数のキーワード引数も使用できます。

  • ドキュメント文字列は、関数の目的を説明します。関数の名前に関連付けられており、を使用して取得できます。documentation 関数。

  • 関数の本体は、任意の数のLisp式で構成できます。

  • 本文の最後の式の値は、関数の値として返されます。

  • 関数から値を返すこともできます。 return-from 特別なオペレーター。

上記の概念について簡単に説明します。詳細については、次のリンクをクリックしてください-

  • オプションのパラメータ

  • 残りのパラメーター

  • キーワードパラメータ

  • 関数からの戻り値

  • ラムダ関数

  • マッピング関数