!Mathematicaプログラミング !!■ 記述例 具体的な記述例を示していきます。 なんだかんだいってサンプルコードが一番わかりやすい様で。 !!!リストの値の和を計算 リスト「{5, 3, 2, 4}」の和を計算します。 !!!!ループ文を用いた手法 <<< foo = {5, 3, 2, 4} sum[list_] := Module[{ len = Length[list], sum = 0, i }, For[i=1, i<=len, i+=1, sum += list[[i]]]; sum ] sum[foo] >>> ループを用いて一つづつ足していっています。 「Module」は局所変数を作成するための関数です。 ここでは、「len」「sum」「i」の3つの局所変数を定義しています。 関数の最後に評価されたもの(ここではsum)が戻り値となります。 MathematicaではForやWhile等はなるべく使わずに、 FoldやMap等を使って記述した方がすっきりすることが多いので、 なるべくForやWhile等は使わないようにすることを勧めます。 !!!!再帰関数の利用 <<< foo = {5, 3, 2, 4} sum[list_] := sum[list, 0] sum[{}, s_] := s sum[{h_, t___}, s_] := sum[{t}, h+s] sum[foo] >>> 「h_」はリストの先頭を、「t___」はリストの残りの要素を指します。 再帰させるときに <<< sum[{t}, h+s] >>> のようにして「t」を渡しますが、 この際「t」を「{}」で囲まないと正しく動作しません。 囲むことを忘れてないようにしてください。 !!!!Fold関数の利用 <<< foo = {5, 3, 2, 4} sum[list_] := Fold[Plus, 0, list] sum[foo] >>> ここでは、関数型言語でおなじみのfold関数を利用しています。 なお、処理の方向はリストの左から(fold-left)となります。 !!!!Apply関数の利用 <<< foo = {5, 3, 2, 4} sum[list_] := Plus @@ list sum[foo] >>> リスト構造のヘッドである「List」を 「@@」を使用し、ヘッドを「Plus」に書き換えることで リストの要素の和を計算させています。