qt_normalize
fnodeは quote型の実体である. fnode は木であり, 型 id および子供からなる. 型および子供を取り出す関数が funargs_to_quote である. また fnode をリストに変換する関数が quotetolist である.
fnode の標準形はパターンマッチング, 書き換えを容易におこなうために導入された. fnode の標準形を fn と書くとき, 標準形の BNF風表現での定義は以下のとおり.
fn = formula | functor(nf [,...]) | sum_of_monom fnode の標準形. functor は関数よびだしみたいなもの. sum_of_monom = monom [+ ...] モノミアルの和 monom = [formula *] nfpow [* ...] モノミアル nfpow = nf | nf^(nf) 冪乗部分の標準形 formula = Risa object
Mode の違いについては以下の例も参考に.
ctrl("print_quote",2); A=quote((x-y)*(x+y)); 出力: ((x)-(y))*((x)+(y)) B=qt_normalize(A,0); 出力: ((x)+((-1)*(y)))*((x)+(y)) Mode=0. 展開はされない. +, * は n_op (nary-op) へ. quotetolist(B); 出力: [n_op,*,[n_op,+,[internal,x],[n_op,*,[internal,-1],[internal,y]]],[n_op,+,[internal,x],[internal,y]]] B=qt_normalize(A,1); 出力: ((x)^(2))+((x)*(y))+((-1)*((y)^(2)))+((-1)*(y)*(x)) Mode=1. 展開する. +, * は n_op (nary-op) へ. 巾をまとめる. quotetolist(B); 出力: [n_op,+,[b_op,^,[internal,x],[internal,2]],[n_op,*,[internal,x],[internal,y]],[n_op,*,[internal,-1],[b_op,^,[internal,y],[internal,2]]],[n_op,*,[internal,-1],[internal,y],[internal,x]]] qt_normalize(A,2); 出力: ((x)*(x))+((x)*(y))+((-1)*(y)*(x))+((-1)*(y)*(y)) Mode=2. 展開する. +, * は n_op (nary-op) へ. 巾は使わない. quotetolist(B); 出力: [n_op,+,[b_op,^,[internal,x],[internal,2]],[n_op,*,[internal,x],[internal,y]],[n_op,*,[internal,-1],[b_op,^,[internal,y],[internal,2]]],[n_op,*,[internal,-1],[internal,y],[internal,x]]] qt_normalize(`x^2,2); 出力: (x)*(x) Mode=2. 巾は使わない. n-ary の * へ.
nqt_match
,
section nqt_match_rewrite
,
@xref{quotetolist},
section quote_to_funargs
, funargs_to_quote
, remove_paren
ChangeLog
Go to the first, previous, next, last section, table of contents.