Цепочка методов и |> Оператор конвейера

Итак, у меня есть следующий код:

// 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 #, которые я вижу, используется | > оператор конвейера, хотя я больше привык к цепочке методов (например, C # Linq). Последний также несколько короче, хотя и несколько сложнее вместе. На данный момент я использую синтаксис C # Linq, но это скорее привычка / инерция а не какое-либо реальное дизайнерское решение.

Есть ли какие-либо соображения, о которых я должен знать, или они в основном идентичны?

Редактировать: Другое соображение заключается в том, что синтаксис Pipe значительно более "шумный" чем синтаксис Linq: операция, которую я выполняю (например, "карта"), действительно короткая и написана строчными буквами, в то время как каждой из них предшествует Огромный "|> Список", который, помимо увеличения длины, отвлекает взгляд от крошечных , имя метода в нижнем регистре. Даже подсветка синтаксиса StackOverflow выделяет неправильную (несущественную) вещь. Либо это, либо я просто к этому не привык.

23
задан abatishchev 13 October 2014 в 05:01
поделиться