quote_to_funargs, funargs_to_quote, remove_parenquote_to_funargs は quote 型のデータ (内部的には FNODE) を
quote への復元可能な形でリストへ変換する.
quotetolist は quote をリストへ変換するが, 一部の情報を捨てるため
もとの quote の復元はできない.
quote_to_funargs の戻り値は [fid, op, arg1, arg2] なる形式をしている.
ここで op はなにか謎 (Todo)
次の例では (x+1)+(x+2) の括弧をはずして x+1+x+2 に変換している.
[0] ctrl("print_quote",1) $
[1] Q=quote((x+1)+(x+2));
[b_op,+,[u_op,(),[b_op,+,[internal,x],[internal,1]]],
[u_op,(),[b_op,+,[internal,x],[internal,2]]]]
[2] FA=quote_to_funargs(Q);
[0,<...quoted...>,
[u_op,(),[b_op,+,[internal,x],[internal,1]]],
[u_op,(),[b_op,+,[internal,x],[internal,2]]]]
[3] FA2=quote_to_funargs(FA[2])[1];
[b_op,+,[internal,x],[internal,1]]
[4] FA3=quote_to_funargs(FA[3])[1];
[b_op,+,[internal,x],[internal,2]]
[5] funargs_to_quote([FA[0],FA[1],FA2,FA3]);
[b_op,+,[b_op,+,[internal,x],[internal,1]],
[b_op,+,[internal,x],[internal,2]]]
次の例は OpenXM/asir-contrib 版の asir で実行.
[1287] load("noro_simplify.rr");
1
[1293] noro_simplify.remove_paren(quote( f(1-(x))));
quote(f(1-x))
ChangeLog
Go to the first, previous, next, last section, table of contents.