質問: mathematica f[{x, y}]を f[{x+1, y}]に変えたい 関数の f[{x, y}]+g[{z, w}]-h[{a, b, c}] という式があったときに,これらの式の f や g や h の中に入っているリスト(今の場合は,{x, y}や{z, w}や{a, b,c})の先頭の要素に,+1をして, f[{x+1, y}]+g[{z+1, w}]-h[{a+1, b, c}] のようにしたいと考えています. 極力簡明な方法であれば有り難いと考えていますが,例えばどのような方法がありますでしょうか?お教え頂ければ大変有り難く存じます. (追記) 以前大変親切な方に,「関数の f[{x, y}]+g[{z, w}] という式があったときに,これらの式の f や g の中に入っているリスト(今の場合は,{x, y}や{z, w})の先頭に,a を付け加えて, f[{a, x, y}]+g[{a, z, w}] のようにするには,f[{x, y}] + g[{z, w}] /. {s_symbol[{args__}] -> s[{a, args}]}のように記述すれば良い旨を教えて頂きました.」 今回も上記の式の類似式をいろいろと作ってみましたが,なかなか上手くいきません. 例えば,f[{2, 3}] + g[{4, 1}] - h[{2, 2, 1}] /. {s_symbol[{args__}] -> s[prepend[{args}, 1]]}は上手くいきますが,prependのところをdelete(と,1])にしてみると上手くいきません.
回答: 以下のようにすれば良いでしょう。 f[{x, y}] + g[{z, w}] - h[{a, b, c}] /. {s_symbol[{a1_, a2___}] -> s[a1 + 1, a2]}