T. Onoma
11/18/2003 8:12:00 AM
daz wrote:
> Wrap is a controlling 'outer' wrap. The combination of
> pre/post would be a benign 'inner' wrap. Benign in the
> sense that you could safely assume that you wouldn't
> accidentally be changing the program's logic.
actually, i think, with a programming language like ruby, worrying about changing program logic is sort of like worrying about strong typing. i think most rubyists are more instrested in having the control, even if measn we can break things. its not like we can't fix them! :) in light of this i've been thinking about allowing complete access to methods and lambdas through an array like interface, where each statment is indexed. something like:
pm = lambda { p 'hi'; x = 4; x }
pm[0] # => { p 'hi' }
pm[1] # => { x = 4 }
pm[2] # => { x }
so each statment is like a little lambda. then you can actually manipulate these:
pm << { x + 1 }
pm[0..-1] # => { p 'hi'; x = 4; x; x + 1 }
pm[0] = lambda { p 'hello' } if pm[0].to_s.include?('hi')
which is like a wrap, but much more "aware".
of course this requires a little panning out of the syntax to work well. but ruby is so dynamic, i imagine it is quite possible.
-t0
p.s. you'll find this idea explained a little more, and generalized to all structures, in my RCR.