Notation,Symbolize,InfixNotation

Notation

Notation[boxes expr]boxesexpr に構文解析され,exprboxes としてフォーマットされるよう設定する
Notation[boxes expr]boxesexpr と構文解析されるように設定する
Notation[boxes expr]exprboxes としてフォーマットされるよう設定する
Notation[notation, opts]オプション opts を伴う表記法 notation を定義する
RemoveNotation[notation]表記法 notation を削除する

表記法の宣言のシンタックス

Notationは引数として外部表現と内部表現の両方を取る.Mathematica は外部表現に合致する入力すべてを対応する内部表現に変換し,また反対に,内部表現に合致する式を対応する外部表現にフォーマットする.ここで表現というのは,ある「表記法」を表すボックスで構成された複合構造のことである.

パッケージをロードする.
In[5]:=
Click for copyable input
という新しい表記法を宣言する.
In[6]:=
Click for copyable input
に合致する入力はすべてとして構文解析される.
In[7]:=
Click for copyable input
Out[7]//FullForm=
式はすべて新しい表記法にフォーマットされる.
In[8]:=
Click for copyable input
Out[8]=

を使って定義された表記法は,指定の表記法に従って式を構文解析・フォーマットする.しかし,表記法の命令文の中での代りにまたはを使って,このような表記法を構文解析だけ,またはフォーマットだけするように限定することもできる.

仮のの構文解析のための表記法を定義する.
In[9]:=
Click for copyable input
これでが解析可能になった.
In[10]:=
Click for copyable input
Out[10]=
外観がより従来の数式に近いDerivativeオブジェクトの出力形式を定義する.
In[7]:=
Click for copyable input
これにより,導関数は新しい導関数表記法でフォーマットされる.
In[9]:=
Click for copyable input
Out[9]=
前の出力を入力として使えるようにするために,偏導関数の構文解析が定義できる.
In[10]:=
Click for copyable input
これでこれらの新しい導関数の表記法が使えるようになった.
In[12]:=
Click for copyable input
Out[12]=

ユーザは通常構文解析とフォーマットの両方の機能が使用できると考えているので,両方の表記法の定義を行うことが望ましい.

次の表記法は,Applyが上ルビとして付加された矢印のフォーマットと構文解析をするものである.
In[13]:=
Click for copyable input
線形性など簡単な規則が,直観的な方法で入力できるようになった.
In[14]:=
Click for copyable input
In[15]:=
Click for copyable input
Out[15]=

初めはNotation文の両辺のアンダースコアがいくらか奇異に感じるかもしれない.しかし,表記法の変換は通常双方向に機能するため,Notation文の両辺のアンダースコアは至極自然なものであり,すぐに直観的に理解できるようになるであろう.

Symbolize

Symbolize[boxes]boxes をシンボルとして扱う
Symbolize[boxes,opts]boxes をオプション opts を伴うシンボルとして扱う
RemoveSymbolize[boxes]boxes をシンボルとして扱うことを中止する

シンボル化の宣言のシンタックス

Symbolizeはボックス構造のクラスを内部的にシンボルとして扱うために使われる.複合オブジェクトは,ときにシンボル化しなければならないことがある.例えば複合オブジェクトに規則が付加できるようにするためには,そのオブジェクトはシンボルとして扱われなければならない.

次の式は複合オブジェクト がシンボルとして扱われるように宣言する.
In[22]:=
Click for copyable input
パッケージは複合シンボル 用のFullForm名を作成した.
In[23]:=
Click for copyable input
Out[23]//FullForm=
これで複合シンボル に規則が添付できるようになった.
In[15]:=
Click for copyable input
上記の の規則はの規則の前に適用が試みられる.
In[16]:=
Click for copyable input
Out[16]=
Symbolizeは,例えばRuleが下付き文字として付加されているオブジェクトすべてをシンボル化するために,式のクラスもシンボル化する.
In[20]:=
Click for copyable input
これでRuleが下付き文字として付加されているものはすべてシンボルとして扱われるようになった.
In[21]:=
Click for copyable input
Out[21]//FullForm=

シンボル化されたボックス構造は,定義の中でパターン変数として使うことができる.これにより,より親しみやすい表記法で公式が作成できる.しかし,「」の形のパターン式を使わなければならない.この形でないと,Mathematica がそのパターン式を「」と構文解析してしまうことがある.

次の式は,ある状況下でのポテンシャルステップにおける入射波パケットの透過係数を定義する.
In[22]:=
Click for copyable input
In[23]:=
Click for copyable input

InfixNotation

InfixNotation[op,func]op を関数 func を表す中置演算子として扱う
InfixNotation[op,func,opts]op をオプション opts を伴う関数 func を表す中置演算子として扱う
RemoveInfixNotation[op,func]複合中置演算子 op を削除する

中置表記法の宣言のシンタックス

InfixNotationは複合ボックス構造を挿入演算子として扱うために用いられる.InfixNotationは挿入演算子を表す複合ボックスオブジェクトと,式の完全形頭部となるシンボルの両方を必要とする.この双対性は,Mathematica において挿入表記法が完全形頭部Plusを持っているのと類似している.

複合オブジェクトJoinの挿入形式として動作するように宣言する.
In[23]:=
Click for copyable input
In[24]:=
Click for copyable input
Out[24]=
挿入表記法は入力を構文解析し,出力をフォーマットする.
In[25]:=
Click for copyable input
Out[25]=

挿入演算子の定義にNotationではなくInfixNotationを使うと,式を評価することなく内部のフラットな形式に構文解析できるという利点がある.これは小さなことではあるが,重要である(リング演算可能な限り評価せずに構文解釈するを参照のこと).

InfixNotationは入力を構文解析してフラットな式にする.
In[26]:=
Click for copyable input
Out[26]//FullForm=

関数InfixNotationは,関数~f~の挿入形式を使用する場合と比較できる(「式の特殊な入力法」を参照のこと).

表記法の入力

独自の表記法の定義の際には,表記法テンプレートを使うことが「非常に」重要となる.表記法テンプレートは以下に示される表記法パレットに含まれている.

17.gif

このような制限があるのは,ノートブックにペーストされたテンプレートには基本的なタグボックスが正しく埋め込まれているからである.このような埋め込まれたタグボックスを利用すると,NotationSymbolizeInfixNotationを使って新しく定義される表記法を適切にグループ化し,構文解析することができるようになる.さらに,これらの関数も新しい表記法のスタイル情報を得て,出力が入力と同じスペーシング,サイズ,調整などでフォーマットできるようになる.

空の表記法テンプレートは次のようなものである.
Click for copyable input

注:表記法パレットを使わないで,対応する文字のボックス構造をParsedBoxWrapperで囲んでもよい.

Mathematica では,必要な表記法や式すべてについて入力エイリアスが作成できる.このような入力に使う通常のインターフェースはやや扱いにくいため,表記法パッケージには関数AddInputAliasが含まれている.これは現行のノートブックに容易に入力エイリアスが加えられるようにするためのものである.一般的なテンプレートには簡単に入力するためのそれぞれのエイリアスがある.例えばEsc Escと入力すると,表記法テンプレートNotation[FIXME FIXME]が入力される.

現行ノートブックに命令文を適用するための入力エイリアスを加える.
In[27]:=
Click for copyable input

これでEsc Escと入力するだけで「適用」テンプレートが入力できるエイリアスが作成された.

New to Mathematica? Find your learning path »
Have a question? Ask support »