어떻게 항목을 목록에서 위로 이동합니까?
입력 목록과 같습니다 let list = [1;2;3;4;5]
그리고 출력 목록은 다음처럼 보일 것이다
[1;2;3;5;4]
.........>
목록에서 항목 위로 이동
[2;1;3;4;5]
...>......
플롯 트위스트 : 나는 할 수 있도록하려면 목록의 모든 색인을 이동하려면
내가 아는 바로는 이것은 F # 또는 함수형 언어로하는 것을 목표로하지는 않지만 내 프로그램에 반드시 있어야합니다.
나는 이것이 재귀와 higher order (HO) 함수를 사용하여 수행 될 수 있다고 믿지만 HO의 knowlegde가 매우 제한적이어서 재귀를 사용하여 이것을 해결하려고 시도했다.
그러나
let rec moveDownAt index list =
match index, list with
| -1, _ -> list
| 0, h1::h2::t -> h2::h1::t
| index, h::t -> h::moveDownAt (index - 1) t
| _, [] -> list
, 나는 "이전을 참조 할 필요가 다른 방향으로 이동을 머리 "와 나는 세 번째 매치 라인에 문제가 있다고 가정합니다. | index, h::t -> h::moveDownAt (index - 1) t
내가 h :를 수행하는 곳 : 목록에 헤드를 추가 했으므로 (그 인수를 추가하면 이전 다음 호출이 될 것입니다).