Atajo de colon de rubí y signo [duplicado]

Posible duplicado:
¿Qué significa mapa (&: nombre) en Ruby?

En Ruby, sé que si lo hago:

some_objects.each(&:foo)

Es lo mismo que

some_objects.each { |obj| obj.foo }

Es decir,&:foo crea el bloque{ |obj| obj.foo }, lo convierte en un Proc, y se lo pasa a cada uno. ¿Por qué funciona esto? ¿Es solo un caso especial de Ruby, o hay alguna razón por la que esto funciona como lo hace?

Respuestas a la pregunta(2)

Su respuesta a la pregunta