......还是在FSharpx?
let tee sideEffect =
fun x ->
do sideEffect x
x
Run Code Online (Sandbox Code Playgroud)
用法可能是这样的
f >> tee (printfn "F returned: %A") >> g >> h
Run Code Online (Sandbox Code Playgroud)
或者还有另一种简单的方法吗?
谢谢!
我见过的最接近的实际上是在WebSharper中.定义是:
let inline ( |>! ) x sideEffect =
do sideEffect x
x
Run Code Online (Sandbox Code Playgroud)
用法:
(x |>! printf "%A") |> nextFunc
Run Code Online (Sandbox Code Playgroud)
ExtCore 包含一个被调用的函数tap
,它完全符合您的要求。我主要使用它来检查 F#“管道”中的中间值(因此得名)。
例如:
[| 1;2;3 |]
|> Array.map (fun x -> x * 2)
|> tap (fun arr ->
printfn "The mapped array values are: %A" arr)
|> doOtherStuffWithArray
Run Code Online (Sandbox Code Playgroud)