基本的オブジェクト
式
式は Mathematica で中心的な役割をするデータ型である.
式は
の形式で記述できる.ここで,h は式の頭部(head)と呼ばれ,
は式の要素と呼ばれる.頭部や要素はそれ自体が式からなることもある.
式の成分は数字の添字で参照される.頭部は添字0に対応し,成分
は添字 i である.Part[expr, i]や
は,式 expr の i 番目の成分を返す.負の数字の添字は末尾から数えた成分を表す.
Part[expr, i1, i2, ...],
,Extract[expr, {i1, i2, ...}]は,添字
の部分式の,そのまた部分式のように,順に expr の部分式を取り出した結果を返す.式を木にたとえると,添字は各枝分かれでどの枝を行くかを決めている.
n 個の添字で指定される式全体のことをレベル n の式と定義する.レベルを使うと,Map等の関数の適用領域が指定できる.レベル0は式全体に対応する.
式の深さは,式のどんな成分でも指定可能とするために必要な添字の個数に1を足した値で与えられる.負のレベル-n は,式の部分のうち深さ n を持つものすべてを表す.
シンボル
シンボルとは,Mathematica における基本的な名前付きオブジェクトのことである.
シンボルの名前は,文字,文字的な記号,数字の連なりからなっていなければならない.またシンボルの始めの文字は数字であってはならない.Mathematica では,大文字と小文字は常に区別される.
| aaaaa | ユーザ定義のシンボル |
| Aaaaa | 組込み型のシンボル |
| $Aaaa | 大域シンボル(内部定義の変数もこの形式を取る) |
| aaaa$ | スコープの構文において名前が変更されたシンボル |
| aa$nn | モジュールにおいて生成される名前が固有の局所シンボル |
基本的に,すべての組込み型シンボルは通常のアルファベットと数字と
のみからなる.例外は
,
,
,
,
である.
組込み型のシンボルは,慣例として1つまたはそれ以上の完全な英単語を組み合せた名前が与えられている.単語の始まりには大文字が使われ,また,スペースを入れないで単語を結合した形で名前が構成される.
シンボルが作成されると,Removeで明示的に除去するまでシンボルは存在し続ける.ただし,Module等のスコープを限定する構造の中で生成されるシンボルには属性Temporaryが与えられるので,そのシンボルがすべての式中で使用されなくなった時点で自動的に消去される.
シンボルが新規に生成されるときは,まず,$NewSymbolの内容が,与えられたシンボルの名前とシンボルが生成されるコンテキストの名前を構成する文字列に適用される.
メッセージGeneral::newsymがオンのときは,新規にシンボルが生成されると Mathematica は新規にシンボルが生成されたことを報告してくれる.デフォルトではこの機能はオフになっている.また,スコープの構文の内部で自動的に生成されたシンボルについては報告しない.
コンテキスト
すべてのシンボルの完全名は2つの部分からなる.つまり,コンテキストと短縮名である.完全名は
の書式で与えられる.コンテキスト名
は,短縮名と全く同じ文字で構成される.また,この指定にはコンテキスト記号(
)を繰り返し使ってもよい.指定はコンテキスト記号で終了する.
Mathematica セッションでは常に,$Contextに現在のコンテキストが格納されている.また,コンテキストの検索パスである$ContextPathには,コンテキストのリストが格納されている.シンボルが現行コンテキスト,または,検索パスにあるコンテキストに存在する場合,それが同じ短縮名の別のシンボルで隠されていないなら,その短縮名を使うだけで参照できる.
| name | 最初に$ContextPathを検索し,次に$Contextを検索する.必要なら$Contextにシンボルを設ける |
| `name | $Contextだけを検索する .必要ならシンボルを設ける |
| context`name | context だけを検索する.必要なら同コンテキストにシンボルを設ける |
| `context`name |
通例として,Mathematica パッケージでは,パッケージ名に対応した名前をコンテキストに付ける.典型的にはパッケージでは,適切なコンテキストにオブジェクトを定義し,大域変数$ContextPathにパッケージのコンテキストを追加するためにBeginPackageとEndPackageを使用する.パッケージで作るシンボルが検索パスにあるコンテキストにすでに存在する同名のシンボルによって「隠されて」しまう場合,EndPackageが実行される時点において警告がなされる.
シンボルを表示する際,シンボルを特定するためにコンテキストが必要である場合だけ,コンテキスト名も併せて表示される.
原子オブジェクト
Mathematica の式は,突き詰めると少数の基礎的な「原子オブジェクト」から構成される.
原子オブジェクトはオブジェクトの型を特定するために頭部を持つ.原子オブジェクトは,オブジェクトの型ごとに特化された関数でのみアクセス可能な「生データ」を保持している.これら特別なオブジェクトの頭部はHeadにより抽出できるが,オブジェクトの他の部分は直接には取り出すことはできない.
| Symbol | シンボル(名前の抽出にはSymbolNameを使う) |
| String | 文字列で |
| Integer | 整数(桁の数字の抽出にはIntegerDigitsを使う) |
| Real | 近似実数を表す(桁の数字の抽出にはRealDigitsを使う) |
| Rational | 有理数(部分の抽出にはNumeratorとDenominatorを使う) |
| Complex | 複素数(部分の抽出にはReとImを使う) |
Mathematica では原子オブジェクトは深さ0であり,AtomQによりTrueと判定される.
数
Mathematica では,どのタイプの数においても桁数に制限はない.Mathematica は整数,有理数,実部と虚部がそれらからなる複素数については,可能な限り,厳密な計算を行う.
Mathematica には2種類の近似実数が存在する.任意精度と機械精度である.任意精度の数の計算では,全桁が正確な値を表すよう,数の精度が自動調整される.
一方,機械精度の数を使う場合は,すべての計算が固定桁精度で行われる.このため,出力されるすべての桁が有効であるとは限らない.
特に指定しなければ,入力した実数が$MinMachineNumberから$MaxMachineNumberの範囲にあり,その桁数が$MachinePrecisionより小さいとき,実数は機械精度の数として扱われる.
InputFormでは,末位の桁がゼロである場合を除いて,機械精度の数は$MachinePrecisionの有効数字で表示される.
どのバージョンの Mathematica においても,数値は0を除き$MinNumberから$MaxNumberの範囲に限られる.この範囲を超えた場合,数はUnderflow[],またはOverflow[]で表される.
文字列
Mathematica の文字列は,どのような文字を含んでいても構わない.文字列は
の書式で入力 する.
各文字には32〜126番の印字可能なASCII文字,または一般には8ビットと16ビット系の文字が使用できる.Mathematica は16ビット文字のエンコーディングにUnicodeを採用している.
