Gavin Kistner wrote: > I have a proc with arity 1: > @who= "main" > holla = lambda{ |str| p @who, str } I believe your lambda is bound to the @who in the scope where it was defined, you can't dynamically rebind it. To demonstrate: class A def initialize @x = 123 end def run fn = lambda { puts "@x = #{@x}" } B.new(fn).run end end class B def initialize(fn) @x = 456 @fn = fn end def run @fn.call end end A.new.run # => @x = 123 In other words, @who is not the same as self.instance_variable_get(:@who), as far as I can see anyway. I think that what you ask for would lead to very surprising behaviour, especially when using blocks: @count = 0 something.whatever { @who += 1 } You wouldn't want @who ever to be bound to some other object further down the call chain. > For those interested in second-guessing my approach and coming up with > a better way to achieve the same end goal Perhaps rather than using lambdas, define methods on the object which contains the instance variables you're interested in, then call those methods (or use method(:name) to get a Method object, which you can pass around pretty much like a lambda) -- Posted via http://www.ruby-forum.com/.