[1, 2, 3].each { |i| puts i }

[1, 2, 3].each do |i|
  if i % 2 == 0
    puts "#{i} is even."
  else
    puts "#{i} is odd."
  end
end

1.upto 3 do |x|
  puts x
end

1.upto(3) { |x| puts x }

hello = lambda { "Hello" }
hello.call

log = lambda { |str| puts "[LOG] #{str}" }
log.call("A test log message.")

{1=>2, 2=>4}.each { |k,v| puts "Key #{k}, value #{v}" }

def times_n(n)
  lambda { |x| x * n }
end

times_ten = times_n(10)
puts times_ten.call(5)
puts times_ten.call(1.25)

circumference = times_n(2*Math::PI)
puts circumference.call(10)
puts circumference.call(3)
puts [1, 2, 3].collect(&circumference)

ceiling = 50
puts [1, 10, 49, 50.1, 200].select { |x| x < ceiling }