2014-11-03 1 views
2

가장 깨끗한 &은 F #에서이 '복합'목록을 만드는 가장 간단한 방법입니다.FSharp Compound List

입력 :

[ 1; 2; 3; 4; 5 ] 

원하는 출력 :

[ [1]; [1;2]; [1;2;3]; [1,2,3,4]; [1;2;3;4;5] ] 

답변

4

이 많은 방법이 있지만 나는이 깨끗한 하나라고 생각 : 생략 List.scan 마지막 List.tail를 사용하여

[1;2;3;4;5] 
    |> List.scan (fun x y -> x @ [y]) [] 
    |> List.tail 

최초의 요소는 빈 상태 (empty)의리스트

1

는 다음의 int로 엄격하게 내용을 해석하고 지능형리스트를 사용하여 다른 방법 :

[1; 2; 3; 4; 5] |> List.map(fun n -> [ for i = 1 to n do yield i ]) 

그리고 당신은 위와 같은 출력을 얻을 수 있지만, 귀하의 의견이있는 경우 :

[2; 1; 2] |> List.map(fun n -> [ for i = 1 to n do yield i ]) 

당신은 얻을 :

[[1; 2]; [1]; [1; 2]] 

어떤 것이 좋을 수도 있고 그렇지 않을 수도 있습니다.