Mathematica にはリストを使用するための強力な操作が数多く含まれている.リストの個々の要素に関数をマップすることが望ましい場合が多くある.リストを作成できる関数はこの操作をデフォルトで行うが,リストを作成しない関数については関数
Mapを使ってこの操作を行うことができる.
| Out[1]= |  |
Mapを使うとリストのすべての要素それぞれに関数をマップすることができる.以下の例では未定義の関数である
fを使う:
| Out[2]= |  |
/@を
Mapの簡略表記として使うことができる(これは上の例と同じコマンドである):
| Out[3]= |  |
数学関数の多くが
Listableの特性を持つ.つまり,これらの関数は自動的にリストにマップされる:
| Out[4]= |  |
| Out[5]= |  |
関数が
Listableではない場合は,代りに
Mapを使うことができる.5個の2×2行列のリストを設定する:
| Out[6]= |  |
Mapを使って,
MatrixFormをリストに対してマップし,それぞれを数学表記で見る:
| Out[7]= |  |
今度は
Mapを使ってリストの行列それぞれについて固定値を計算する:
| Out[8]= |  |
Mapは,単にリストだけに働くものではなく,どのような式にでも使うことができる:
| Out[9]= |  |
Applyは,もうひとつの関数プログラミング操作である.これは式の頭部を置換する.
この関数がどのように働くかを2つの未定義関数(
fと
g)を使って見ることができる:
| Out[10]= |  |
Applyの簡略表記は
@@である(これは上の例と同じコマンドである):
| Out[11]= |  |
よく使われる式は
Mathematica において
StandardFormで表示されるが,その内在する
FullFormは
Applyをいかに使用するかを示している:
| Out[12]= |  |
| Out[13]= |  |
Applyは,リストの要素を関数の引数に変換させたい場合に便利である.
| Out[14]= |  |
順序対の最初の数を2番目で割る場合に
Modは残余を求める:
| Out[15]= |  |
Modをすべての対に適用する場合には,リストのレベル1(
{1}で指定される)で作業する必要がある:
| Out[16]= |  |
@@@を簡略表記として使ってレベル1で適用することができる:
| Out[17]= |  |
次は,
Functionを純関数とともに使って同じことを行う別の方法である:
| Out[18]= |  |
| Out[19]= |  |