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