puts "Ruby version: #{RUBY_VERSION}"

first_proc = proc { |x| x + 2 }
second_proc = proc { |x| x + 3 }

# works
puts first_proc.class
puts "proc { |x| x + 2 }"
puts RubyVM::InstructionSequence.disasm(first_proc)
puts "-------------------------------------"

# works
puts second_proc.class
puts "proc { |x| x + 3 }"
puts RubyVM::InstructionSequence.disasm(second_proc)
puts "-------------------------------------"

composed_function = first_proc >> second_proc
# unexpected result
puts composed_function.class
puts "proc { |x| x + 2 } >> proc { |x| x + 3 } returns nil??"
puts RubyVM::InstructionSequence.disasm(composed_function)

