在F#库的某个地方是否存在T恤功能?

vid*_*idi 10 f#

......还是在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)

或者还有另一种简单的方法吗?

谢谢!

Chr*_*son 6

我见过的最接近的实际上是在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)

  • 我不是运营商的忠实粉丝。如果|>也!被定义,那么我期望>>!也要定义。为什么不呢!和!<<?因此开始变得混乱。所以我宁愿拥有命名功能。但是感谢您的链接! (2认同)

Jac*_* P. 5

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)