In some languages (such as Ruby), function application is right associative:
def half x
x / 2
end
half half half 16 # => 2
Whereas, function application in Nix is left associative. However, one can do this:
let
makeAssociative = f: x: if builtins.isFunction x then makeAssociative (y: f (x y)) else f x;
half = makeAssociative (x: x / 2);
in half half half 16 # => 2