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で自分自身を書換えながらプログラムを進化させることが出来る。