Конечно, вы можете написать:
for x in X do ()
Хорошо, это не то, что вы просите, но выражения последовательности и for
часто являются синтаксически более простым способом выражения конвейеров.
Возвращаясь к вашему вопросу - причина, по которой <|
не работает (для более длинного конвейера), заключается в том, что он имеет слишком низкий приоритет (потому что у него другое назначение). Вам понадобится оператор с более высоким приоритетом, чем |>
, чтобы код анализировался правильно. Вы можете написать, например:
let (+<) f a = f a
[1..10] |> Seq.map +< fun x -> x * x
|> Seq.iter +< fun x -> printfn "%A" x
Но на самом деле, это не очень хорошая идея использовать на практике, потому что это не спасет вас от набора текста и запутает других программистов F #, которые будут читать ваш код (в отличие от Haskell при использовании $
).