String.Join
- это метод .NET. При использовании метода .NET F # рассматривает его как функцию, которая принимает кортеж в качестве аргумента (при вызове его вы записываете параметры как f(a, b)
). Оператор |>
может использоваться с функциями, которые используют карри в форме параметров (и могут быть вызваны записью f a b
).
Вместо этого вы можете использовать функцию String.concat
из библиотеки F # (которая делает то же самое):
["a"; "b"] |> String.concat "+"
РЕДАКТИРОВАТЬ File.WriteAllLines
тот же случай. Если вы хотите использовать его как часть конвейера, вы можете написать функцию F #, которая переносит вызов:
let writeAllLines file (lines:seq<string>) =
System.IO.File.WriteAllLines(file, lines)
Как правило, |>
можно использовать с методами .NET, только если вы хотите записать все аргументы в левой части оператора. Например, вы можете написать:
("+", ["a"; "b"]) |> System.String.Join
... но это не соответствует обычному использованию оператора трубопровода. При работе с .NET API обычно лучше использовать стиль программирования, подобный C # (без конвейерной обработки), поскольку конвейер хорошо работает только с функциональными библиотеками.