低レベル入出力の規則

MakeBoxes[expr,form]expr を指定表記法のボックス形に記述変換する
MakeExpression[boxes,form]ボックス boxes を指定表記法の式に逆変換する

式とボックスの変換用の低レベル関数

MakeBoxesは,入力式を評価しないままボックス形に変換する.
In[1]:=
Click for copyable input
Out[1]=
ボックス形の式を計算可能な式に変換する.ただし,保留関数HoldCompleteが適用され,実際の計算は行われない.
In[2]:=
Click for copyable input
Out[2]=

Wolfram言語には入力式の解釈と出力式の生成のために膨大な数の規則が組み込まれている.それらの規則は,特に,StandardFormにおいて矛盾がないように設定されている.したがって,StandardFormの入出力では入力用の式と出力用の式が交換可能になる.

演算子の処理規則をカスタマイズすることは非常にまれであろう.それは必要がないからである.Wolfram言語には多くの機能上未定義な演算子に関しても,入出力処理で使う規則がすでに組み込まれているからである.

例えば,乗算演算子の一般形を作るならば,等の演算子に入出力処理の規則がすでに定義済みなので,それを使えば用が足りる.

出力式がの演算子で表示される.
In[3]:=
Click for copyable input
Out[3]=
また,入力するとが演算子であることが認識される.
In[4]:=
Click for copyable input
Out[4]//FullForm=

Format[expr]を使い特定の式を特殊書式で表示させる方法は説明したが,一度書式変換した出力式は入力式としては使えなくなってしまうので気を付ける.

必要ならば,基本的な入出力の処理規則から定義し直すことも可能である.つまり,MakeBoxesMakeExpressionの割付け式を定義する.ただし,少しでも間違った定義をすると,矛盾してしまうので十分な注意が必要である.

StandardFormにおいてをどう表示したらよいか詳細な指定をする.
In[5]:=
Click for copyable input
が添数付きの演算子として表示される.
In[6]:=
Click for copyable input
Out[6]=
関数としては定義していないので評価されない.
添数付きのFullFormの入力として扱うよう割付け式を定義する.
In[8]:=
Click for copyable input
この記述は入力式として解釈できない.添数付きのとして扱われる.
In[9]:=
Click for copyable input
Out[9]//FullForm=

MakeBoxesを使い規則を定義することは,基本的にFormat機能を使った変換書式の定義付けの低レベル版に相当する.両者の違いは,MakeBoxesでは引数の評価は行われないが,Formatでは行われるということにある.したがって,前者を使うときは,変換した式が評価処理を経てどうなるかは全く気にせずに変換規則を組み立てることができる.

さらに,Formatは,それを使って変換して得られた二次的な式に対して再度自動的に適用される.MakeBoxesは動作が異なり,二次的な式に変換を要するものがあっても特別にMakeBoxesを適用しない限り変換は起らない.

評価最小単位の要素に分解する.
スペース記号等を除去する.
評価優先順に従いボックスを構築する.
スタイルボックス(StyleBox)等の評価に無関係なオブジェクトは除去する.
MakeExpression用の変換規則を適用する.

入力式に施される処理手順