cube = proc{|x| x ** 3} croot = proc{|x| x ** (1.quo 3)} compose = proc {|f,g| proc {|x| f[g[x]]}} funclist = [Math.method(:sin), Math.method(:cos), cube] invlist = [Math.method(:asin), Math.method(:acos), croot] puts funclist.zip(invlist).map {|f, invf| compose[invf, f][0.5]}