这些是函数定义.
func1: 'a -> unit
func2: 'b -> 'a
func3: string -> 'b list
Run Code Online (Sandbox Code Playgroud)
目前的功能
let f = Seq.iter((fun a -> func1(func2 a)) func3(s)
Run Code Online (Sandbox Code Playgroud)
这是我得到的
let f = func3(s)
|> ((fun a -> func2 a
|> func1)
|> Seq.iter)
Run Code Online (Sandbox Code Playgroud)
我觉得应该可以松开lambda和parens'.
简单地说,你可以不用管道
Seq.iter (func1 << func2) << func3
Run Code Online (Sandbox Code Playgroud)
(这是一个带有一些参数[相同func3]和相同输出的函数Seq.iter).
你可以测试一下
let func1 x = printfn "Number: %d" x
let func2 (a, b) = a + b
let func3 = Seq.map (fun n -> (n, 2 * n))
let f : (seq<_> -> unit) = Seq.iter (func1 << func2) << func3
f [1..5]
Run Code Online (Sandbox Code Playgroud)
与输出
Number: 3
Number: 6
Number: 9
Number: 12
Number: 15
val func1 : x:int -> unit
val func2 : a:int * b:int -> int
val func3 : (seq<int> -> seq<int * int>)
val f : (seq<int> -> unit)
val it : unit = ()
Run Code Online (Sandbox Code Playgroud)
:)