January 6th, 2006

  • evan

ruby blocks

A friend has been learning Ruby and asking questions. His first: why are procs and blocks different? (More simply: why aren't blocks special syntax for procs?)

All I could come up with is that "return" in a block returns from the lexically enclosing function, while "return" in a proc returns from the proc itself. (This is a useful distinction, though it leads to the confusing LocalJumpError exception when you call a block after control has passed away from its lexically enclosing function...)

Is that it?