OCaml Printf.sprintf
Dlaczego to zachowanie występuje?
<code># Printf.sprintf ("Foo %d %s") 2 "bar";; - : string = "Foo 2 bar" # Printf.sprintf ("Foo %d" ^ " %s") 2 "bar";; Printf.sprintf ("Foo %d" ^ " %s") 2 "bar";; Error: This expression has type string but an expression was expected of type ('a -> 'b -> 'c, unit, string) format = ('a -> 'b -> 'c, unit, string, string, string, string) format6 </code>
Spodziewałbym się, że konkatenacja łańcucha będzie oceniana jako pierwsza, więc wszystko będzie przebiegało normalnie. Czy ma to związek z oszustwem systemu typu, które stosuje Printf?