Crystal の Proc

こういう関数があって:

def greeting(&block)
  yield "Hello, World!"
end

こんな風に渡すことができるよ:

#
# 通常通りにブロックを渡す。
greeting { |v| puts v }

#
# puts を Proc にして渡す。
greeting &->puts(String)

#
# puts を Proc にしたものをブロックとして渡す。
proc = ->puts(String)
# greeting proc               # これはエラー!
greeting &proc

Crystal ではオーバーロードができるので、ブロック無しの greeting を呼び出したい場合は、
ブロック無しの greeting を作ろう?