type
intfunctor = function(x: integer): integer;
function compose(f, g: intfunctor): intfunctor;
function h(x: integer): integer;
begin
h := f(g(x))
end;
begin
compose := intfunctor(@h)
end;
function dbl(x: integer): integer;
begin
dbl := x * 2
end;
function square(x: integer): integer;
begin
square := x * x
end;
begin
write(compose(@dbl, @square)(5))
end.
dHlwZQogIGludGZ1bmN0b3IgPSBmdW5jdGlvbih4OiBpbnRlZ2VyKTogaW50ZWdlcjsKCmZ1bmN0aW9uIGNvbXBvc2UoZiwgZzogaW50ZnVuY3Rvcik6IGludGZ1bmN0b3I7CiAgZnVuY3Rpb24gaCh4OiBpbnRlZ2VyKTogaW50ZWdlcjsKICBiZWdpbgogICAgaCA6PSBmKGcoeCkpCiAgZW5kOwpiZWdpbgogIGNvbXBvc2UgOj0gaW50ZnVuY3RvcihAaCkKZW5kOwoKZnVuY3Rpb24gZGJsKHg6IGludGVnZXIpOiBpbnRlZ2VyOwpiZWdpbgogIGRibCA6PSB4ICogMgplbmQ7CgpmdW5jdGlvbiBzcXVhcmUoeDogaW50ZWdlcik6IGludGVnZXI7CmJlZ2luCiAgc3F1YXJlIDo9IHggKiB4CmVuZDsKCmJlZ2luCiAgd3JpdGUoY29tcG9zZShAZGJsLCBAc3F1YXJlKSg1KSkKZW5kLg==