// кратко
let rec sec1 xs =
match xs with a::_::t | a::([] as t) -> a :: sec1 t | _ -> []
// быстро
let sec2 xs =
let rec loop acc = function
| a::_::t | a::([] as t) -> loop (a::acc) t
| _ -> List.rev acc
loop [] xs
//
let sec3 xs =
xs |> List.mapi (fun i e -> if i % 2 = 0 then Some e else None)
|> List.choose id
open System.Linq
let sec4 (xs : 'a list) =
xs.Where(fun _ i -> i % 2 = 0) |> Seq.toList
let sp = [0..10]
sp |> printfn "%A"
sec1 sp |> printfn "%A"
sec2 sp |> printfn "%A"
sec3 sp |> printfn "%A"
sec4 sp |> printfn "%A"
Ly8g0LrRgNCw0YLQutC+CmxldCByZWMgc2VjMSB4cyA9IAogICAgbWF0Y2ggeHMgd2l0aCBhOjpfOjp0IHwgYTo6KFtdIGFzIHQpIC0+IGEgOjogc2VjMSB0IHwgXyAtPiBbXQoKLy8g0LHRi9GB0YLRgNC+CmxldCBzZWMyIHhzID0gCiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb24gCiAgICAgICAgICAgICAgICAgICAgICAgfCBhOjpfOjp0IHwgYTo6KFtdIGFzIHQpIC0+IGxvb3AgKGE6OmFjYykgdAogICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBMaXN0LnJldiBhY2MKICAgIGxvb3AgW10geHMKCi8vIApsZXQgc2VjMyB4cyA9IAogICAgeHMgfD4gTGlzdC5tYXBpIChmdW4gaSBlIC0+IGlmIGkgJSAyID0gMCB0aGVuIFNvbWUgZSBlbHNlIE5vbmUpIAogICAgICAgfD4gTGlzdC5jaG9vc2UgaWQKCm9wZW4gU3lzdGVtLkxpbnEKbGV0IHNlYzQgKHhzIDogJ2EgbGlzdCkgPSAKICAgIHhzLldoZXJlKGZ1biBfIGkgLT4gaSAlIDIgPSAwKSB8PiBTZXEudG9MaXN0CgoKIApsZXQgc3AgPSBbMC4uMTBdCnNwIHw+IHByaW50Zm4gIiVBIiAKc2VjMSBzcCB8PiBwcmludGZuICIlQSIKc2VjMiBzcCB8PiBwcmludGZuICIlQSIKc2VjMyBzcCB8PiBwcmludGZuICIlQSIKc2VjNCBzcCB8PiBwcmludGZuICIlQSIK