Труба Правый сквозной оператор PipeThrough - PullRequest
0 голосов
/ 23 октября 2018

Я объявил следующий оператор, чтобы сделать мой карри код немного более разборчивым

Pipe-Through позволяет передавать значение через метод и переходить на другую сторону.Я думаю, что это помогает сделать мой код более кратким.

let (|=>) x f = x |> f |> ignore; x

Пример использования

let y = x |> transform
y |> logger.LogInformation
y
|> process
|> return

Теперь становится

x 
|> transform 
|=> logger.LogInformation 
|> process 
|> return

Это полезно или я заново изобрелколесо

1 Ответ

0 голосов
/ 23 октября 2018

Это полезно и, как и все хорошие изобретения, оно было сделано и другими.

Скотт Влашин назвал его tee: https://fsharpforfunandprofit.com/rop/

Предлагаемый оператор: |>!:

let inline    tee f v   = f v ; v
let inline  (|>!) v f   = f v ; v
let inline  (>>!) g f   = g >> fun v -> f v ; v    /// composition

(5 * 8) |> tee (printfn "value = %d") |> doSomethingElse
(5 * 8) |>!     printfn "value = %d"  |> doSomethingElse

Это определение немного отличается от вашего, поскольку оно делаетне используется ignore.

Спасибо, что поделились!

...