Why is the syntactical array constructor [| ... |] evaluating elements from right to left: # let f i = (Printf.printf "%d\n" i; i);; val f : int -> int = # Array.init 3 f;; 0 1 2 - : int array = [|0; 1; 2|] # [| f 0 ; f 1; f 2|];; 2 1 0 - : int array = [|0; 1; 2|] Thanks, - Jakob