演算子の入力形

Wolfram言語は,文字あるいは文字のようなもの,さらに構造的な要素を演算子として扱う.Wolfram言語はこれらを演算子として解釈する組込み規則を持っている.しかし,これらの演算子に対応する関数のすべてに組込みの評価規則が存在するとは限らない.組込みの評価規則が存在する関数には,以下の表においてマーク()が付いている.
二次元ボックスを作る演算子(名前の先頭にバックスラッシュが付いている)は,\(\)の中でのみ使用できる.以下の表ではこれらの演算子が!()中にある場合の解釈について述べている.「ボックスの入力」には\!がないときの解釈が記述されている.
expr
および
expri
任意の式
symb
任意のシンボル
patt
任意のパターンオブジェクト
string
および
stringi
文字,文字的な記号,数字等の文字列(例:"cccc"
filename
string と同じであるが,次に示す文字も使用可能である
組込みの評価規則が存在する
演算子の入力形の表において使われるオブジェクト

演算子の優先順位

演算子の形
完全形
グループ化
数を表す形(を参照)
記号を表す形(シンボル名とコンテキストを参照)
文字列を表す形(文字列を参照)
e11e12
e21e22
{{e11,e12,},{e21,e22,},}
e11e12
e21e22
Piecewise[{{e11,e12},{e21,e22},}]
expr::stringMessageName[expr,"string"]
expr::string1::string2MessageName[expr,"string1","string2"]
#を含む形(補助的な入力形を参照)
%を含む形(補助的な入力形を参照)
_を含む形(補助的な入力形を参照)
<<filenameGet["filename"]
Overscript[expr1,expr2]
expr1\&expr2Overscript[expr1,expr2]e\&(e\&e)
Underscript[expr1,expr2]
expr1\+expr2Underscript[expr1,expr2]e\+(e\+e)
Underoverscript[expr1,expr2,expr3]
expr1\+expr2\%expr3Underoverscript[expr1,expr2,expr3]
expr1\&expr2\%expr3Underoverscript[expr1,expr3,expr2]
expr1expr2Subscript[expr1,expr2]e(ee)
expr1\_expr2Subscript[expr1,expr2]e\_(e\_e)
expr1\_expr2\%expr3Power[Subscript[expr1,expr2],expr3]
\!boxes
boxes の解釈形)
expr1?expr2PatternTest[expr1,expr2]
expr1[expr2,]expr1[expr2,](e[e])[e]
expr1[[expr2,]]Part[expr1,expr2,](e[[e]])[[e]]
expr1expr2,Part[expr1,expr2,](ee)e
expr1expr2Part[expr1,expr2,](ee)e
expr1::[expr2,]TypeSpecifier[expr1][expr2,](e::[e])::[e]
\*expr
expr から構成されたボックス)
expr++Increment[expr]
expr--Decrement[expr]
++exprPreIncrement[expr]
--exprPreDecrement[expr]
expr1@*expr2Composition[expr1,expr2]e@*e@*e
expr1/*expr2RightComposition[expr1,expr2]e/*e/*e
expr1expr2Application[expr1,expr2](ee)e
expr1@expr2expr1[expr2]e@(e@e)
expr1 expr2
(不可視の適用,expr1 Esc@Esc expr2として入力)
expr1[expr2]
expr1~expr2~expr3expr2[expr1,expr3](e~e~e)~e~e
expr1/@expr2Map[expr1,expr2]e/@(e/@e)
expr1//@expr2MapAll[expr1,expr2]e//@(e//@e)
expr1@@expr2Apply[expr1,expr2]e@@(e@@e)
expr1@@@expr2MapApply[expr1,expr2]e@@@(e@@@e)
expr!Factorial[expr]
expr!!Factorial2[expr]
exprConjugate[expr]
exprTranspose[expr]
exprConjugateTranspose[expr]
exprConjugateTranspose[expr]
expr'Derivative[1][expr]
expr'''
n 回)
Derivative[n][expr]
expr1<>expr2<>expr3StringJoin[expr1,expr2,expr3]e<>e<>e
expr1^expr2Power[expr1,expr2]e^(e^e)
expr1expr2Power[expr1,expr2]e(ee)
Power[Subscript[expr1,expr2],expr3]
expr1\^expr2\%expr3Power[Subscript[expr1,expr3],expr2]
垂直矢印とベクトル操作
Sqrt[expr]
\@ exprSqrt[expr]\@(\@ e)
\@ expr\%nPower[expr,1/n]
exprDifferentialD[expr]( e)
expr1expr2D[expr2,expr1]e(ee)
exprDel[expr](e)
expr1expr2DiscreteShift[expr2,expr1]e(ee)
expr1expr2DiscreteRatio[expr2,expr1]e(ee)
expr1expr2DifferenceDelta[expr2,expr1]e(ee)
exprSquare[expr]( e)
expr1 expr2 expr3SmallCircle[expr1,expr2,expr3]e e e
expr1 expr2 expr3CircleDot[expr1,expr2,expr3]e e e
expr1**expr2**expr3NonCommutativeMultiply[expr1,expr2,expr3]e**e**e
expr1expr2expr3Cross[expr1,expr2,expr3]eee
expr1.expr2.expr3Dot[expr1,expr2,expr3]e.e.e
-exprTimes[-1,expr]
+exprexpr
±exprPlusMinus[expr]
exprMinusPlus[expr]
expr1/expr2expr1(expr2)^-1(e/e)/e
expr1÷expr2Divide[expr1,expr2](e÷e)÷e
expr1\/expr2Divide[expr1,expr2](e\/e)\/e
expr1expr2expr3Backslash[expr1,expr2,expr3]eee
expr1expr2expr3Diamond[expr1,expr2,expr3]eee
expr1expr2expr3Wedge[expr1,expr2,expr3]eee
expr1expr2expr3Vee[expr1,expr2,expr3]eee
expr1expr2expr3CircleTimes[expr1,expr2,expr3]eee
expr1·expr2·expr3CenterDot[expr1,expr2,expr3]e·e·e
expr1 expr2 expr3Times[expr1,expr2,expr3]e e e
expr1*expr2*expr3Times[expr1,expr2,expr3]e*e*e
expr1×expr2×expr3Times[expr1,expr2,expr3]e×e×e
expr1expr2expr3Star[expr1,expr2,expr3]eee
e4Product[e4,{e1,e2,e3}]( e)
expr1expr2expr3VerticalTilde[expr1,expr2,expr3]eee
expr1expr2expr3Coproduct[expr1,expr2,expr3]eee
expr1expr2expr3Cap[expr1,expr2,expr3]eee
expr1expr2expr3Cup[expr1,expr2,expr3]eee
expr1 expr2 expr3CirclePlus[expr1,expr2,expr3]eee
expr1 expr2CircleMinus[expr1,expr2](e e) e
expr1expr2Integrate[expr1,expr2] ( e e) e
e3e4Integrate[e3,{e4,e1,e2}] ( e e) e
e1e2e3Integrate[e3,e1e2] ( e)
その他の積分演算子
e4Sum[e4,{e1,e2,e3}]( e)
e3Limit[e3,e1e2](e)
e3MaxLimit[e3,e1e2](e)
e3MinLimit[e3,e1e2](e)
expr1+expr2+expr3Plus[expr1,expr2,expr3]e+e+e
expr1-expr2expr1+(-1expr2)e-e-e
expr1±expr2PlusMinus[expr1,expr2](e±e)±e
expr1expr2MinusPlus[expr1,expr2](ee)e
expr1expr2Intersection[expr1,expr2]eee
その他の積集合演算子
expr1expr2Union[expr1,expr2]eee
その他の和集合演算子
i;;j;;kSpan[i,j,k]e;;e;;e
expr1==expr2Equal[expr1,expr2]e==e==e
expr1==expr2Equal[expr1,expr2]e==e==e
expr1expr2Equal[expr1,expr2]eee
expr1!= expr2Unequal[expr1,expr2]e!=e!=e
expr1!=expr2Unequal[expr1,expr2]e!=e!=e
その他の方程式・類似演算子
expr1>expr2Greater[expr1,expr2]e>e>e
expr1>=expr2GreaterEqual[expr1,expr2]e>=e>=e
expr1expr2GreaterEqual[expr1,expr2]eee
expr1expr2GreaterEqual[expr1,expr2]eee
expr1<expr2Less[expr1,expr2]e<e<e
expr1<=expr2LessEqual[expr1,expr2]e<=e<=e
expr1expr2LessEqual[expr1,expr2]eee
expr1expr2LessEqual[expr1,expr2]eee
その他の順序付け演算子
expr1expr2VerticalBar[expr1,expr2]eee
expr1expr2NotVerticalBar[expr1,expr2]eee
expr1expr2DoubleVerticalBar[expr1,expr2]eee
expr1expr2NotDoubleVerticalBar[expr1,expr2]eee
水平矢印とベクトル操作演算子
対角矢印演算子
expr1===expr2SameQ[expr1,expr2]e===e===e
expr1=!=expr2UnsameQ[expr1,expr2]e=!=e=!=e
expr1expr2Element[expr1,expr2]eee
expr1expr2NotElement[expr1,expr2]eee
expr1expr2Subset[expr1,expr2]eee
expr1expr2Superset[expr1,expr2]eee
その他の集合関係演算子
expr1expr2ForAll[expr1,expr2]e(ee)
expr1expr2Exists[expr1,expr2]e(ee)
expr1expr2NotExists[expr1,expr2]e(ee)
!exprNot[expr]!(!e)
¬exprNot[expr]¬(¬e)
expr1&&expr2&&expr3And[expr1,expr2,expr3]e&&e&&e
expr1expr2expr3And[expr1,expr2,expr3]eee
expr1expr2expr3Nand[expr1,expr2,expr3]eee
expr1expr2expr3Xor[expr1,expr2,expr3]eee
expr1expr2expr3Xnor[expr1,expr2,expr3]eee
expr1||expr2||expr3Or[expr1,expr2,expr3]e||e||e
expr1expr2expr3Or[expr1,expr2,expr3]eee
expr1expr2expr3Nor[expr1,expr2,expr3]eee
expr1expr2expr3Equivalent[expr1,expr2,expr3]eee
expr1expr2Implies[expr1,expr2]e(ee)
expr1expr2Implies[expr1,expr2]eee
expr1expr2RightTee[expr1,expr2]e(ee)
expr1expr2DoubleRightTee[expr1,expr2]e(ee)
expr1expr2LeftTee[expr1,expr2](ee)e
expr1expr2DoubleLeftTee[expr1,expr2](ee)e
expr1expr2UpTee[expr1,expr2](ee)e
expr1expr2DownTee[expr1,expr2](ee)e
expr1expr2SuchThat[expr1,expr2]e(ee)
expr..Repeated[expr]
expr...RepeatedNull[expr]
expr1|expr2Alternatives[expr1,expr2]e|e|e
symb:exprPattern[symb,expr]
symb:patt:expr Optional[Pattern[symb,patt],expr]
patt:exprOptional[patt,expr]
expr1~~expr2~~expr3StringExpression[expr1,expr2,expr3]e~~e~~e
expr1/;expr2Condition[expr1,expr2](e/;e)/;e
expr1<->expr2TwoWayRule[expr1,expr2]e<->(e<->e)
expr1expr2TwoWayRule[expr1,expr2]e(ee)
expr1expr2Rule[expr1,expr2]e(ee)
expr1expr2Rule[expr1,expr2]e(ee)
expr1:>expr2RuleDelayed[expr1,expr2]e:>(e:>e)
expr1 expr2RuleDelayed[expr1,expr2]e(ee)
expr1/.expr2ReplaceAll[expr1,expr2](e/.e)/.e
expr1//.expr2ReplaceRepeated[expr1,expr2](e//.e)//.e
expr1+=expr2AddTo[expr1,expr2]e+=(e+=e)
expr1-=expr2SubtractFrom[expr1,expr2]e-=(e-=e)
expr1*=expr2TimesBy[expr1,expr2]e*=(e*=e)
expr1/=expr2DivideBy[expr1,expr2]e/=(e/=e)
expr&Function[expr]
expr1expr2Colon[expr1,expr2]eee
expr1//=expr2ApplyTo[expr1,expr2]e//=(e//=e)
expr1//expr2expr2[expr1](e//e)//e
expr1expr2VerticalSeparator[expr1,expr2]eee
expr1expr2Therefore[expr1,expr2]e(ee)
expr1expr2Because[expr1,expr2](ee)e
expr1=expr2Set[expr1,expr2]e=(e=e)
expr1:=expr2SetDelayed[expr1,expr2]e:=(e:=e)
expr1^=expr2UpSet[expr1,expr2]e^=(e^=e)
expr1^:=expr2UpSetDelayed[expr1,expr2]e^:=(e^:=e)
symb/:expr1=expr2TagSet[symb,expr1,expr2]
symb/:expr1:=expr2TagSetDelayed[symb,expr1,expr2]
expr=.Unset[expr]
symb/:expr=.TagUnset[symb,expr]
expr1|->expr2Function[expr1,expr2]e(ee)
expr1expr2Function[expr1,expr2]e(ee)
expr>>filenamePut[expr,"filename"]
expr>>>filenamePutAppend[expr,"filename"]
expr1;expr2;expr3CompoundExpression[expr1,expr2,expr3]
expr1;expr2;CompoundExpression[expr1,expr2,Null]
expr1\`expr2FormBox[expr2,expr1]e\`(e\`e)
演算子の入力形(優先度の高い順から並んでいる).優先度の等しい演算子でグループ化されている
特殊な入力形
完全形
#Slot[1]
#nSlot[n]
#stringSlot["string"]
##SlotSequence[1]
##nSlotSequence[n]
%Out[ ]
%%Out[-2]
%%%
( n times)
Out[-n]
%nOut[n]
_Blank[ ]
_exprBlank[expr]
__BlankSequence[ ]
__exprBlankSequence[expr]
___BlankNullSequence[ ]
___exprBlankNullSequence[expr]
_.Optional[Blank[ ]]
symb_Pattern[symb,Blank[ ]]
symb_exprPattern[symb,Blank[expr]]
symb__Pattern[symb,BlankSequence[ ]]
symb__exprPattern[symb,BlankSequence[expr]]
symb___Pattern[symb,BlankNullSequence[ ]]
symb___exprPattern[symb,BlankNullSequence[expr]]
symb_.Optional[Pattern[symb,Blank[ ]]]
_ :exprOptional[Blank[],expr]
symb_:exprOptional[Pattern[symb,Blank[]],expr]
_head :exprOptional[Blank[head],expr]
symb_head:exprOptional[Pattern[symb,Blank[head]],expr]
補助的な入力形(上から優先度の高い順に並んでいる)

特殊文字

演算子として使われる特殊文字は,演算子が表す関数と同じ名前を持つ.例えば,特殊文字の名前はであり,関数CirclePlusを表している.例外として,がある.
挿入句的な演算子で使われる区切り記号は\[LeftName]\[RightName]のように命名されている.
「名前付き文字のリスト」には演算子として使われる特殊文字の一覧表がある.
キーボードの文字
特殊文字
->
:>
==
!=
キーボードの文字
特殊文字
>=
>=
<=
<=
解釈が等価なキーボード文字と特殊文字
キーボードの文字
特殊文字
: :
~ ~
^ ^
^ ^
* *
\
キーボードの文字
特殊文字
. .· ·
| |
| |
| |
- -
...
解釈が異なるキーボード文字と特殊文字

優先順位と入力形の並び順

入力形の表では優先順位が高い順に並べられていて,また,同一の欄にある入力形は同じ優先順位を持つ.表では同一の優先度が2つのページにまたがらないようになっている.「式の特殊な入力法」で説明したように,入力した式の各項は優先順位に従ってまとめられる.一般的にはより高い優先順位を持つ場合,と解釈され, と解釈される.

入力形のグループ化

ある入力形が繰り返し使用されたり,優先順位の等しい入力形と同時に使用されたりしたときにどのようにグループ化されるかが,表の第3列に示されている.例えば,a/b/c(a/b)/cとグループ化される(左側の結合則).また,a^b^ca^(b^c)とグループ化される(右側の結合則).a+b+cのような式ではPlusは両側の結合則を持ち,それがFlat属性により表されているので,グループ化について考える必要はない.

積分演算子の優先順位

上記の表において のような形式には,2つの演算子\[Integral]\[DifferentialD]が含まれる.前者はよりも優先順位が高く,後者はPowerよりも優先順位が低い, の優先順位によっていつをカッコでくくればよいかが決定され, の優先順位によっていつをカッコでくくればよいかが決定される.形式 には が含まれないため,この場合の は通常の前置演算子のように動作する.
に関しても,と同様である.
積分演算子に関連する二次元的な入力形は「二次元の入力形」を参照のこと.

スペースと乗算

Wolfram言語において,スペースは通常の数学の場合と同じように乗算を表す.さらに,Wolfram言語では,完結した式が隣り合っていればスペースで区切られていなくても,乗算するものとして扱う.
x y z x*y*z
2x 2*x
2(x+1) 2*(x+1)
c(x+1) c*(x+1)
(x+1)(y+2) (x+1)*(y+2)
x! y x!*y
x!y x!*y
乗算の記述法
x!yのような式は(x!)*yx*(!y)のどちらとも取れるが,実際には,Factorialの方がNotより優先順位が高いので,前者が計算される.
単一の入力形に含まれるスペースは無視される.例えば,a + bは,a+bと等しい.優先順位の低い演算子の両側にスペースを入れることで,プログラムの可読性を高めることができる.
シンボルの前に数字を付加することで「係数」を与えることができる.10進数よりも底が大きい数を使う場合は文字も使うことができる(10進法以外の数を使う場合,係数とシンボルの間にはスペースが必要となる).
x^2yx^2 yと同様に(x^2) yを意味する
x/2yx/2 yと同様に(x/2) yを意味する
xyは単一のシンボルを表し,x*yではない
注意を要するいくつかの例

スペースを避けた方がよい場合

/.=.>=のような複合演算子の各文字間にスペースを入れるのは避けるべきである.そのようなスペースは場合によっては可能かもしれないが,混乱を生む可能性がある.
パターンオブジェクトx_を入力するときもスペースを入れてはいけない.x_のように入力すると,Wolfram言語はx_ではなく,x*_と解釈するからである.
同じように,x_:value 等のパターンオブジェクトの中にスペースを入れるのも好ましくない.

間隔調整文字

キーボードのスペースキーを使った通常の入力記号名 ( )
()
キーボードのスペースと等しい働きをする間隔調整文字

関係演算子

関係演算子は混ぜて使ってもよい.a>b>=cのような関係式は,Inequality[a,Greater,b,GreaterEqual,c]に変換され,(a>b)&&(b>=c)として評価される.(Inequalityは,a>b>=cのような入力式の処理において,式が(この場合は)2度評価されないようにするために使われる.)

ファイル名

<<>>>>>の後にファイル名を指定する際は引用符でくくる.ファイルが英数字,記号`/.!-_:$*~?からファイル名が構成されているときや,スペースとタブと改行文字を除く任意の文字を両側から角カッコでくくったものであるときには引用符は必要ない.引用符を付けない場合,ファイル名の後に続けられるのはセミコロンとコンマ,さらに,スペース,タブ,改行,そして,)]}だけである.