|
2.3.6 多者択一型のパターン

多者択一パターンの指定
関数hを,その引数がaまたはbのときだけにpを返す関数として定義する.
In[1]:= h[a | b] := p
最初の2つだけがpを返す.
In[2]:= {h[a], h[b], h[c], h[d]}
Out[2]= 
変換規則にも択一選択の条件を使うことができる.
In[3]:= {a, b, c, d} /. (a | b) -> p
Out[3]= 
もう1つ例を挙げる.今度は,選択肢の1つがパターンであることに注目.
In[4]:= {1, x, x^2, x^3, y^2} /. (x | x^_) -> q
Out[4]= 
択一選択型のパターンを構築するときは,すべてのパターン候補に対して同じ名前を使うようにする.(a[x_] | b[x_])のようなパターンが式にマッチするとき,オブジェクトxに対応する確定した式が必ずある.これに対して,(a[x_] | b[y_])のようなパターンでマッチさせようとすると,確定した式はあるが,それは,xまたはyのどちらかにしか対応せず,両方には対応しない.このため,例えば,変換規則の右辺においてxとyの両方を使うと,確定した式を参照することはできない.
ここで,fは,aかbのどちらかの頭部を表す名前として使われている.
In[5]:= {a[2], b[3], c[4], a[5]} /. (f:(a|b))[x_] -> r[f, x]
Out[5]= 
|