Обозначение |>
отображается только при наличии нескольких приложений с вложенными функциями. Многие люди находят это:
x |> f a |> g b c |> h d
легче читать, чем это:
h d (g b c (f a x))
, потому что больше нет необходимости сопоставлять скобки мысленно, и потому что операции применяются в левой порядок справа налево (что вполне естественно для читателей английского языка sh и других языков слева направо).
Если вы знакомы с командными строками Unix, это может помочь подумать о Оператор |>
аналогичен оператору Unix pipe |
.
Оператор приложения с более низким приоритетом, такой как @@
, также помогает избежать скобок (и их умственного сопоставления). Многие люди находят это:
f x @@ g a b @@ h c d
легче читать, чем это:
f x ((g a b) (h c d))
Ваш пример для @@ неверен. Это
let options_len = nearest_4 @@ Cstruct.len t.options
эквивалентно этому:
let options_len = nearest_4 (Cstruct.len t.options)
и не эквивалентно тому, что вы написали.
Приоритет оператора определяется его первым символом , Это, в свою очередь, определяется таблицей в Разделе 7.7.1 руководства OCaml.
(Конечно, вам нужно очень внимательно прочитать текст перед таблицей, чтобы увидеть правило приоритета.)
Обновление
Полное раскрытие: я никогда не использую |>
или @@
в своем собственном коде. У меня нет проблем с несколькими скобками, и я обычно использую let
, чтобы разбить большое выражение на более мелкие части.