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