// the tail of an array
local tail(array) = std.makeArray(
  std.length(array) -1,
  function(x) array[x + 1],
);
local compose(functions) =
  if std.length(functions) == 0
    then
      function(object) object
    else
      function(object) compose(
        tail(
          functions,
        )
      )(
        functions[0](object)
      );
// compose an array of functions
compose