関数名に引数を埋め込める言語を作ろうとするテスト
アセンブラによってオペランドの流儀が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、……"
なんて文法に必ずしも縛られる必要は無いかなあという。いや、オイラー大先生は偉大ですけど。