Как уже упоминалось, оператор "forward-pipe" |>
помогает с составлением функции и выводом типа.Это позволяет вам переставить параметры функции, чтобы вы могли поставить последний параметр функции первым.Это позволяет создавать цепочки функций, которые очень удобочитаемы (аналогично LINQ в C #).Ваш пример не показывает всю мощь этого - он действительно сияет, когда у вас настроен «конвейер» преобразования для нескольких функций подряд.
Используя |>
цепочку, вы можете написать:
let createPerson n =
if n = 1 then "Homer" else "Someone else"
let hello name = "Hello " + name + "!"
let solution2 =
1
|> createPerson
|> hello
|> printf "%s"
Преимущество обратного оператора <|
заключается в том, что он меняет приоритет оператора, поэтому может сэкономить много скобок: аргументы функции обычно оцениваются слева направо, используя <|
, который вам не нуженскобки, если вы хотите передать результат одной функции другой функции - ваш пример на самом деле этим не пользуется.
Это будет эквивалентно:
let createPerson n =
if n = 1 then "Homer" else "Someone else"
let hello name = "Hello " + name + "!"
let solution3 = hello <| createPerson 1
let solution4 = hello (createPerson 1)