Итак, у меня есть следующий код:
// Learn more about F# at http://fsharp.net
open System
open System.Linq
open Microsoft.FSharp.Collections
let a = [1; 2; 3; 4; 54; 9]
let c = a |> List.map(fun(x) -> x*3) |> List.filter(fun(x) -> x > 10)
let d = a.Select(fun(x) -> x*3).Where(fun(x) -> x > 10)
for i in c do
Console.WriteLine(i)
for i in d do
Console.WriteLine(i)
Оба, кажется, делают одно и то же, но в большинстве примеров F#, которые я вижу, используется оператор канала |>, в то время как я больше привык к цепочке методов (a.l.a. C# Linq). Последний также несколько короче, хотя и несколько более сжат вместе. Пока я использую синтаксис C# Linq, но это скорее привычка/инерция, чем какое-либо реальное дизайнерское решение.
Есть ли какие-то соображения, о которых я должен знать, или они в основном идентичны?
Изменить. Другое соображение заключается в том, что синтаксис Pipe значительно более «шумный», чем синтаксис Linq: операция, которую я делаю (например, «карта»), очень короткая и написана строчными буквами, а каждой из них предшествует этот Огромный «|> List», который, помимо увеличения длины, отвлекает внимание от крошечного имени метода в нижнем регистре. Даже подсветка синтаксиса StackOverflow выделяет неправильные (нерелевантные) вещи. Либо так, либо я просто не привык к этому.