ты пишешь
foo (1 + 2) (2 + 3)
и сначала считается foo и если ему нужен первый аргумент то он высчитывается, а если не нужен то он не вычислится никогда. то же и со вторым.
Что сделает этот код если у foo тип unit -> unit? Положит хуй на аргументы, без варна, без ошибки?