I read a book Real World OCaml (well, actually, I read russian edition, but that doesn't matter), and I found one funny thing - authors made an mistake in broken code example.
# let (^>) x f = f x;; # Sys.getenv_exn "PATH" ^> String.split ~on:':' path ^> List.dedup ~compare:String.compare ^> List.iter ~f:print_endline ;;
path can't be used here. If you will replace
|> then you get an error.