quote_to_funargs
, funargs_to_quote
, remove_paren
quote_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.