すべては「式」である
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/06/09 07:13 UTC 版)
「Mathematica」の記事における「すべては「式」である」の解説
Mathematicaは「すべては式である (Everything is an expression.)」という思想のもとに設計されている。ここで言う「式 (Expression)」とは、アトムと関数である。 Mathematicaにおいて、数式・リスト・グラフィックスを含むすべてのオブジェクトは head[e1, e2, ...] という共通の基本構造を持つ。そして、この構造は入れ子にできる(つまり、e1 や e2 もまたこの構造を持てる)。したがって、どんなに複雑なオブジェクトでも、この基本構造とその再帰的な繰り返しで表現できる。 例えば、x^4+1 という式を入力すると、出力は以下のように表示される。 In[7]:= x^4 + 1Out[7]= 1+x4 FullForm を使うと、この式の完全形(Mathematica における内部表現)を見られる。 In[8]:= FullForm[x^4 + 1]Out[8]= Plus[1, Power[x, 4]] 上記の例では、Plus が head であり、Power[x, 4] が入れ子になっている。x のような記号も実は Symbol["x"] という構造を持っている。 リストも List を head とする同様の構造である。例えば、x^4+1 と {1, x^4} という2つの表現は、外見はまったく異なるが、完全形で見れば head が Plus か List かの違いしかない。 この基本構造により、リストとは無関係の普通の式をリスト演算子で処理できる。 In[9]:= Expand[(Cos[x] + 2 Log[x^11])/13][[2, 1]]Out[9]= 2/13 逆も同様で、リストを普通の式のように扱える。 In[10]:= Map[Apply[Log, #]&, {{2, x}, {3, x}, {4, x}}]Out[10]= {Log[x]/Log[2], Log[x]/Log[3], Log[x]/Log[4]} ここで、Apply は第二引数の head を第一引数で指定されたものに置換する関数である。また、Map は関数型言語によく見られる高階関数 map である。 Mathematica では、数学的オブジェクトがリスト構造と等価であるため、組み込み関数のいくつかは「スレッディング」可能であり、特に指定しなくてもリスト上の各要素にマップされるときにマルチスレッド化される。実際、Apply は次のような場合にマルチスレッド化される。 In[11]:= Apply[Log, {{2, x}, {3, x}, {4, x}}, 1]Out[11]= {Log[x]/Log[2], Log[x]/Log[3], Log[x]/Log[4]} 第三引数 1 により、Apply によって置換するのがリストの最初のレベルであることが指定され、これは前述の例と等価である。
※この「すべては「式」である」の解説は、「Mathematica」の解説の一部です。
「すべては「式」である」を含む「Mathematica」の記事については、「Mathematica」の概要を参照ください。
- すべては「式」であるのページへのリンク