基本的オブジェクト

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