F#将四重管道连接到一个功能

时间:2012-04-11 21:28:00

标签: f#

一个元组用管道传输:

let a = (1,2)
let f a b = ()
a ||> f

三人用管道输送:

let a = (1,2,3)
let f a b c = ()
a |||> f

但这不适用于四重奏:

let a = (1,2,3,4)
let f a b c d= ()
a ||||> f

如何将四重管道传输到函数中?

2 个答案:

答案 0 :(得分:11)

其他由F#定义,对于你需要自己定义的4元组:

let a = (1,2,3,4)
let f a b c d = printfn "got %A %A %A %A" a b c d

let inline (||||>) (a,b,c,d) f = f a b c d

a ||||> f

答案 1 :(得分:4)

你可以用无聊的方式做到,或者......

let a = (1,2,3,4)
let f a b c d = ()
let g = OptimizedClosures.FSharpFunc<_,_,_,_,_>.Adapt(f)
a |> g.Invoke