2017-10-27 4 views
4

int list list을 취하고 int list list을 반환하지만 각 목록을 되 돌리는 함수를 만들고 싶습니다. 예 :목록 목록 반전

[[1;2;3];[4;5;6]] -> [[6;5;4];[3;2;1]] 

지금까지 내가 확실히 볼 수없는 뭔가 반환없는 함께 왔어요 기능 :

[[4;5;6];[6;5;4]] 

그것은 다음과 같습니다

let revrev lstOfLst = 
    let revrevInner lst = 
     List.fold (fun rst x -> x::rst) [] lst 
    List.fold (fun rst x -> x::[(revrevInner x)]) [] lstOfLst 
+3

그냥 궁금해서, 왜 안'List.rev >> List.map List.rev'를? –

+0

나는 'fold'를 더 잘 이해하려고 노력하고 있지만, 간결한 기능을 위해서는 여러분의 제안이 확실히 좋습니다. 의견을 보내 주셔서 감사합니다! – Khaine775

답변

4

을 내 기능을 다시 읽은 후에, 나는 첫 번째 접음에서 처음 사용하지 않는다는 것을 알아 차렸다. 이 기능은 다음과 같아야합니다

let revrev lstOfLst = 
    let revrevInner lst = 
     List.fold (fun rst x -> x::rst) [] lst 
    List.fold (fun rst x -> (revrevInner x)::rst) [] lstOfLst 
1
let revRev lstOfLst = 
    List.fold (fun s x -> (List.rev x) :: s) [] lstOfLst