華麗に型推論をすり抜ける
誤:
print_string( (Printf.sprintf "%s = %s;\n" "a" "b") ^ (Printf.sprintf "%s = %s + %s;\n" "a" "b") (Printf.sprintf "%s = %s;\n" "a" "b") )
正:
print_string( (Printf.sprintf "%s = %s;\n" "a" "b") ^ (Printf.sprintf "%s = %s + %s;\n" "a" "b" "c") ^ (Printf.sprintf "%s = %s;\n" "a" "b") )
sprintfの引数を一つ書き忘れて、かつ ^ 演算子を書き忘れ。
これが組み合わさって型推論的には問題なし。
# まぁ出力が明らかにおかしいからすぐ気づいたんだけどね。