関数名に引数を埋め込める言語を作ろうとするテスト

アセンブラによってオペランドの流儀が2つあったりして分かりづらい

mov dist, src
mov src, dist

とか。

ま、アセンブリなんてほとんど使わないのですが、高級言語でも引数の順番が覚えられないことが多くて困ります。これ、英語の文章っぽくコード書ければ引数の順番間違えが減るんじゃないかと思った。なので、rubyのメソッド名に引数を埋め込んでみる。

#!/usr/bin/ruby

def method_missing(name, *arg)
    if /^gsub_(\w+)_to_(\w+)_in_(\w+)/.match(name.to_s)
        return eval($3,arg[0]).gsub(eval($1,arg[0]), eval($2,arg[0]))
    end
end

a="aho"
b="baka"
str = "hoge fuga aho baka"
p gsub_a_to_b_in_str(binding) # => "hoge fuga baka baka"

method_missing中にgsubが2回出てくるのが気に食わない。もっとメソッドの仕様と英文法とをうまく結びつけるレイヤーを追加してごにょごにょとか。あとバインディング渡すの面倒。
ま、"機能名、オプション情報1、オプション情報2、……"
なんて文法に必ずしも縛られる必要は無いかなあという。いや、オイラー大先生は偉大ですけど。