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.