一般的な表記と慣例

関数名
組込み関数の名前は以下のガイドラインに従って付けられる.
関数の引数
通常,組込み関数の作用する式やオブジェクトは,第1引数として関数に与える.続く引数には補助的なパラメータを与える.
例外として以下の場合がある.
オプション
組込み関数によってはオプションを取るものがある.各オプションは名前を持ち,シンボル,場合によっては文字列として表現される.オプションの指定には規則の形式 name->value または name:>value が使用される.このような規則は,関数のすべての引数の後に置かれる.複数のオプションを指定するときはどの順番でもよい.特にオプションを与えなかったものについては,オプションのデフォルト値が採用される.
Options[f]
f のすべてのオプションのデフォルト値を返す
Options[expr]
式に与えられたオプションを返す
Options[expr,name]
式のオプション name の値を返す
AbsoluteOptions[expr,name]
たとえAutomaticの設定になっていてもオプション name の絶対的な設定値を返す
SetOptions[f,name->value,]
f のオプションのデフォルト値を設定する
CurrentValue[name]
フロントエンドオプション name のオプション設定を与える.オプションを設定するためには,割当ての左辺で使うことができる
オプションに関連した操作
要素の番号付け
n
n 番目の要素(1から始める)
-n
末尾から数えて n 番目の要素
0
頭部を指す
要素の番号付け
部分列の指定
All
全要素
None
零要素
n
1から n 番目までの要素
-n
末尾から n 個の要素
{n}
n 番目の要素のみ
{m,n}
m 番目から n 番目までの要素(ともに含まれる)
{m,n,s}
ステップ sm 番目から n 番目までの要素
部分列の指定
{m,n,s}の列指定は,m, m+s, m+2s, から n 以下の最大要素までに対応する.
部分列の指定は,関数DropOrderingStringDropStringTakeTakeThreadで使用されている.
レベルの指定
n
レベル1n
Infinity
レベル1Infinity
{n}
レベル n のみ
{n1,n2}
レベル n1n2
Heads->True
式の頭部を含む
Heads->False
式の頭部を含まない
レベルの指定
非負の正数 n に対し,式のレベルは n 個の添字により指定される要素の集合と定義される.負数-n のレベルは式の部分のうち深さ n を持つものすべて,を表す.式の深さDepth[expr]は,式のどんな部分でも指定可能とするために必要な添字の個数に1を足した値で与えられる.通常,レベルによる適用範囲指定では頭部は含まれないが,Heads->Trueのオプションが与えられれば頭部も含めるようにできる.レベル0は式全体を示す.レベル-1では,シンボルやその他のオブジェクトのうち,それ以上部分式を持たないものが指定される.
{n1,n2}形式でレベルの範囲を指定すると,木構造レベル n1よりも上のレベル,レベル n2よりも下のレベルに属さない部分式すべてが指定される.ni の符号が一致している必要はない.例えば,{2,-2}は最上位よりは下のレベルだが,木の葉よりは上のレベルに属する部分式を指定できる.
レベル指定はApplyCasesCountFreeQLevelMapMapIndexedPositionReplaceScan等の関数で使われる.ただし,関数によって適用レベルのデフォルトが違うので注意が必要である.
反復変数
{imax}
imax 回反復する
{i,imax}
i が1から imax まで刻み幅1で移動
{i,imin,imax}
iimin から imax まで刻み幅1で移動
{i,imin,imax,di}
iimin から imax まで刻み幅 di で移動
{i,list}
ilist の連続した値を取る
{i,imin,imax},{j,jmin,jmax},
iimin から imax まで変化し,i の各値に対して jjmin から jmax までという風に変化する
反復の指定
反復変数はSumTableDoRange等の関数で使われる.
反復パラメータ imin,imaxdi は整数である必要はない.変数 i が開始値 imin から,di ずつ増分され,i の次の値が imax を超えてしまうならば反復を停止する.(imax-imin)/di が数値を与えるのならば,反復パラメータにシンボルを含む任意の式を使用できる.
複数の反復変数を使うとき,後側に指定された反復変数の反復範囲は,それより前に指定された反復変数の値に依存していても構わない.
変数 i として任意の記号式を指定できる.つまり単一のシンボルである必要はない.i が反復関数内だけの局所的なものとなるように自動的にその値が設定される.実際には,これは反復関数を,i を含むBlock構文により包み込むことで効率的に実現されている.
反復関数の評価の過程に関しては「評価」で述べている.
スコープの限定
Function[{x,},body]
局所パラメータ
lhs->rhs
および
lhs:>rhs
局所パターン名
lhs=rhs
および
lhs:=rhs
局所パターン名
With[{x=x0,},body]
局所定数
Module[{x,},body]
局所変数
Block[{x,},body]
大域変数の局所値
DynamicModule[{x,},body]
Dynamicインターフェースの局所変数
Wolfram言語におけるスコープ構文.上のグループの関数は辞書的に変数をスコープする
スコープ構文により,あるシンボルの名前あるいは値が局所的になるようにできる.
スコープ構文の中には辞書的にスコープするものもある.これは,指定された変数またはパターンの文字通りの例が,適切な値で置換されるということである.局所変数名が必要なときは,形式 xxx の名前のシンボルは一般に xxx$に変更される.ネストしたスコープ構文が評価されるとき,外側のスコープ構文のシンボルと名前が競合することがないように,新しいシンボルは自動的に内側の構文において生成される.
変換規則や定義が使われるとき,ルールの右辺に現れるパターン名の置換処理がReplaceAll(/.)により実現される.このとき,右辺のスコープ構文に現れる他のオブジェクトを表現する必要が生じた場合,新しいシンボルが生成される.
Moduleは,評価されるたびに,本体式に現れる局所変数のすべてについて xxx$nnn の形式の固有な名前を持つシンボルを生成する.
Blockは大域変数の値を局所化する.大域変数に依存するブロックのボディにおける評価はすべて,変数がボディに明示的に現れなくても局所的に指定された値を使用するが,後続する評価からのみ参照される.Blockのボディは大域変数を変更することもできるが,そのような変更はBlockが実行を終了するまでしか持続されない.
DynamicModuleは変数をノートブックのそれぞれのDynamicModule出力に局所化する.つまり,コピー・ペーストを使って生成されたそれぞれのDynamicModule出力で,各々で局所化された変数が使われるということである.
式の並び順
属性OrderlessSort等の関数で自動的に使用される.標準の並び順では以下の規約に従っている.
数学関数
Wolfram言語に組み込まれているLog[x]BesselJ[n,x]等の数学関数は下記の共通な特徴を持っている.
数学定数
Wolfram言語に組み込まれているEPi等の数学定数は次の特徴を持っている.
プロテクト
Wolfram言語では組込みのオブジェクトの内容や動作を変更する指示を行うことができる.
組込み関数を不注意で書き換えることのないよう,通常の組込みオブジェクトは属性Protectedを持つ.組込みオブジェクトを上書きするには,まず,この属性を除去しておく必要がある.これは,関数Unprotectにより行うことができる.
Wolfram言語のいくつかの重要な組込みオブジェクトには,一切書き換えられないものもある.これらは属性Protectedとともに属性Lockedも持つ.属性Lockedは,属性の変更を禁止するもので,それゆえ属性Protectedの除去もできないのである.
短縮形の文字列パターン
StringMatchQNamesRemove等の関数では,StringExpressionにより指定される完全な文字列パターンの他に,短縮形の文字列パターンも与えることができる.短縮形の文字列パターンには,通常の文字列を意味することのできる一定のメタ記号を含めることができる.
*
0個以上の記号
@
大文字を除く1個以上の記号
\\*
,等
文字通りの*
短縮形の文字列で使用できるメタ記号