Next: set & setq, Previous: Variables, Up: List Processing [Contents][Index]
どのようにして情報が関数に渡されるのかを確認するために、今度もお馴染みの2と2の加算の例で調べてみましょう。Lispでは以下のように記述されます:
(+ 2 2)
この式を評価すると、エコーエリアに数値の4が表示されるはずです。Lispインタープリターが行うのは、+
の後に続く数値を加算することです。
+
によって加算される数値は、関数+
の引数(argument)と呼ばれるものです。これらの数値が関数に与えられる、あるいは引き渡される(passed)情報となります。
“引数(argument)”は数学上での用法に由来する単語です。2人の人間の間で交わされる議論とは関係なく(訳注:
日常会話的にはargumentは議論、口論といった意味をもつ)、この場合では関数+
に与えられる情報のことです。Lispでは関数に後続するアトムやリストが関数にたいする引数となります。これらのアトムやリストを評価してリターンされた値が関数に引き渡されるのです。関数が異なれば、要求される引数の個数も異なります。引数をまったく必要としない関数もあります。3
• Data types | Types of data passed to a function. | |
• Args as Variable or List | An argument can be the value of a variable or list. | |
• Variable Number of Arguments | Some functions may take a variable number of arguments. | |
• Wrong Type of Argument | Passing an argument of the wrong type to a function. | |
• message | A useful function for sending messages. |
“argument”という単語が数学と日常英会話で2つの異なる意味をもつようになった経緯には好奇心が唆られます。オックスフォード英語大辞典(Oxford English Dictionary)によれば、これは‘to make clear: はっきりさせる、prove: 証明する’という意味のラテン語に由来する単語です。つまりLispにおけるこの単語の意味は、このラテン語から派生した“the evidence offered as proof: 証明のために提供される証拠”、つまり“the information offered: 提供される情報”という系統樹の1つとして導き出されたものです。しかし別の系統樹では“to assert in a manner against which others may make counter assertions: 他者が反証できる手法による主張”を意味する、論争という意味をもつ単語となったのです(ここで英単語には同時に2つの異なる定義がありますが、それとは対照的にEmacs Lispではあるシンボルが同時に2つの異なる関数定義をもつことはできないことに注意してください)。