Rubyで自己書換えプログラムを作る。
なんとなく。
% ruby -e 'ex = lambda{|e| puts e}; b = binding; STDIN.each{|l| ex.call(eval(l, b))}' 1 + 2 3 ex = lambda{|e| print "=> "; puts e} # ex update #<Proc:0xb7f40a58@-e:1> 1 + 2 => 3 ex = lambda{|e| print "=> "; puts e; print ": "} => #<Proc:0xb7f40760@-e:1> => nil : 1 + 2 => 3 :
evalで自分自身を書換えながらプログラムを進化させることが出来る。