This question basically expands on this question where the answer is that the single argument pipeline operator |>
is compiled to the same CIL as the unpiped version. But what about ||>
and |||>
? MSDN suggests that real tuples are used to wrap the arguments.
But do ||>
and |||>
really allocate a .NET Tuple to wrap the arguments and then unwrap them again just pass them to a function or is the compiler optimized to handle these operators by just rewriting the CIL like it does with |>
?
Update:
Thank you for the answers. It depends on whether the --optimize+
parameter is passed to the F# compiler.
Default release builds in with F# 3.1 in Visual Studio 2013 don't create tuples. Default debug builds do create tuples.