# A higher‑order function is a function that does at least one of the following:
# 1. Takes another function as an argument
# 2. Returns a function as its result
# If it does either one, it qualifies.
# Higher-order function: takes a function as an argument
def apply_twice(fn, x)
fn.call(fn.call(x))
end
# A simple function to pass in
def add3(n)
n + 3
end
# Use the higher-order function
result = apply_twice(method(:add3), 5) # 5 + 3 = 8 + 3 = 11
puts result
=begin
run:
11
=end