From: Austin Ziegler Date: 2003-10-07T12:41:28+09:00 Subject: Yielding to a block from a proc? On irc://irc.freenode.net/#ruby-lang tonight we were discussing procs. Among the discussion (which included unease about the differing semantics of proc {} and Proc.new {}), the question came up about passing a block to a proc. Apparently, all of the following cause compile/syntax errors: proc { |a, &b| } Proc.new { |a, &b| } proc { yield }[] { "block given" } Proc.new { yield }[] { "block given" } More disturbing are the semantics of Proc#call: proc { yield }.call { "block given" } Proc.new { yield }.call { "block given" } These both result in a LocalJumpError. So it's not legal to use Proc#[], but Proc#call considers this legal with an impossible-to-fix error. A parameter MAY be a proc and there's no problem with that. Is this right? Is this pathological? Is it a bug? Is there a reason that this isn't possible, other than the fact that it's pathological to want to do so? -austin -- austin ziegler * austin@halostatue.ca * Toronto, ON, Canada software designer * pragmatic programmer * 2003.10.06 * 23.29.30