Lisp-functions

提供:Dev Guides
移動先:案内検索

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 特殊演算子を使用して、関数から値を返すこともできます。

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

  • リンク:/lisp/lisp_optional_parameters [オプションパラメータ]
  • リンク:/lisp/lisp_rest_parameters [残りのパラメーター]
  • リンク:/lisp/lisp_keyword_parameters [キーワードパラメータ]
  • リンク:/lisp/lisp_returning_values_functions [関数から値を返す]
  • リンク:/lisp/lisp_lambda_functions [ラムダ関数]
  • リンク:/lisp/lisp_mapping_functions [マッピング関数]