def compose proc1, proc2
    Proc.new do |x|
        proc2.call(proc1.call(x))
    end
end

double = Proc.new do |x|
    x * 2
end

square = Proc.new do |x|
    x * x 
end

doubleThenSquare = compose double, square
squareThenDouble = compose square, double

puts doubleThenSquare.call(5)
puts squareThenDouble.call(5)

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: