From: spooq Date: 2006-11-17T20:37:24+09:00 Subject: Re: #returning and #tap I definitely think of it as tapping a phone line. a.map.map.map.map eavesdrop = Proc.new { |secret| puts secret } a.map.map.tap(&eavesdrop) .map.map It lets me get into the line and hear what's going on without changing any existing behaviour. Using a proc that modifies secret is not a good idea, just keep it for things with other types of side-effects. There's no way to mark the object read-only for the purposes of the passed-in proc, is there? I haven't seen anything to change my mind about the other use. It just seems pointless.