基本的オブジェクト
式の成分は数字の添字で参照される.頭部は添字0に対応し,成分 ei は添字 i である.Part[expr,i]やexpr[[i]]は,式 expr の i 番目の成分を返す.負の数字の添字は末尾から数えた成分を表す.
Part[expr,i1,i2,…],expr[[i1,i2,…]],Extract[expr,{i1,i2,…}]は,添字 i1,i2,…の部分式の,そのまた部分式のように,順に expr の部分式を取り出した結果を返す.式を木にたとえると,添字は各枝分かれでどの枝を行くかを決めている.
aaaaa | ユーザ定義のシンボル |
Aaaaa | 組込み型のシンボル |
$Aaaa | 大域シンボル(内部定義の変数もこの形式を取る) |
aaaa$ | スコープの構文において名前が変更されたシンボル |
aa$nn | モジュールにおいて生成される名前が固有の局所シンボル |
シンボルが作成されると,Removeで明示的に除去するまでシンボルは存在し続ける.ただし,Module等のスコープを限定する構造の中で生成されるシンボルには属性Temporaryが与えられるので,そのシンボルがすべての式中で使用されなくなった時点で自動的に消去される.
シンボルが新規に生成されるときは,まず,$NewSymbolの内容が,与えられたシンボルの名前とシンボルが生成されるコンテキストの名前を構成する文字列に適用される.
メッセージGeneral::newsymがオンのときは,新規にシンボルが生成されるとWolfram言語は新規にシンボルが生成されたことを報告してくれる.デフォルトではこの機能はオフになっている.また,スコープの構文の内部で自動的に生成されたシンボルについては報告しない.
すべてのシンボルの完全名は2つの部分からなる.つまり,コンテキストと短縮名である.完全名は context`nameの書式で与えられる.コンテキスト名 context`は,短縮名と全く同じ文字で構成される.また,この指定にはコンテキスト記号(`)を繰り返し使ってもよい.指定はコンテキスト記号で終了する.
Wolfram言語セッションでは常に,$Contextに現在のコンテキストが格納されている.また,コンテキストの検索パスである$ContextPathには,コンテキストのリストが格納されている.シンボルが現行コンテキスト,または,検索パスにあるコンテキストに存在する場合,それが同じ短縮名の別のシンボルで隠されていないなら,その短縮名を使うだけで参照できる.
name | |
`name | $Contextだけを検索する .必要ならシンボルを設ける |
context`name | context だけを検索する.必要なら同コンテキストにシンボルを設ける |
`context`name | $Context`context だけを検索する.必要なら同コンテキストにシンボルを設ける |
通例として,Wolfram言語パッケージでは,パッケージ名に対応した名前をコンテキストに付ける.典型的にはパッケージでは,適切なコンテキストにオブジェクトを定義し,大域変数$ContextPathにパッケージのコンテキストを追加するためにBeginPackageとEndPackageを使用する.パッケージで作るシンボルが検索パスにあるコンテキストにすでに存在する同名のシンボルによって「隠されて」しまう場合,EndPackageが実行される時点において警告がなされる.
原子オブジェクトはオブジェクトの型を特定するために頭部を持つ.原子オブジェクトは,オブジェクトの型ごとに特化された関数でのみアクセス可能な「生データ」を保持している.これら特別なオブジェクトの頭部はHeadにより抽出できるが,オブジェクトの他の部分は直接には取り出すことはできない.
Symbol | シンボル(名前の抽出にはSymbolNameを使う) |
String | 文字列で"cccc"の形を取る(構成文字の抽出にはCharactersを使う) |
Integer | 整数(桁の数字の抽出にはIntegerDigitsを使う) |
Real | 近似実数を表す(桁の数字の抽出にはRealDigitsを使う) |
Rational | 有理数(部分の抽出にはNumeratorとDenominatorを使う) |
Complex |
特に指定しなければ,入力した実数が$MinMachineNumberから$MaxMachineNumberの範囲にあり,その桁数が$MachinePrecisionより小さいとき,実数は機械精度の数として扱われる.
どのバージョンのWolfram言語においても,数値は0を除き$MinNumberから$MaxNumberの範囲に限られる.この範囲を超えた場合,数はUnderflow[],またはOverflow[]で表される.
各文字には32〜126番の印字可能なASCII文字,または一般には8ビット,16ビット,21ビット系の文字が使用できる.Wolfram言語は16ビットおよび21ビットの文字にUnicodeの文字セットを採用している.