@foo = Prototype.new %q{ attr_accessor :name } @bar = @foo.new @baz = @bar.new @foo.name = "foo" @bar.name = "bar" @baz.name = "baz" def test_greet try_greet = lambda {|obj| if obj.respond_to? :greet obj.greet(obj.name) else puts "Object #{obj.name} (#{obj.id}) cannot greet" end } try_greet[@foo] try_greet[@bar] try_greet[@baz] end test_greet() @bar.def %q{ greet (name) puts "Greeting from #{name} (id #{self.id})" } puts "Defined bar.greet" test_greet() module Mod def greet (name) puts "Hello from #{name} (#{self.id})" end end @foo.include(Mod) puts "Included module" test_greet()