0
두 개의 변경 가능한 목록을 입력으로 사용하고 출력에 두 번째 목록에 첫 번째 목록을 역순으로 추가하는 함수를 작성해야합니다. 유형 정의는 다음과 같습니다역전 변경 목록 Ocaml
type 'a mylist = 'a listcell ref
and 'a listcell = Nil | Cons of 'a * ('a mylist)
나는 정기적으로 목록을 되돌릴하지만 파괴적으로 첫 번째 목록을 변경하여이 작업을 수행하는 함수를 작성하는 혼란을 겪고 방법을 알고있다. 에가 rev_app
이다
let rec rev_app l1 l2 =
let rec rev_app' l3 l4 =
match !l1 with
| Nil -> l2
| Cons (x,t) -> ref (rev_app t (Cons(x,l4)))
in rev_app' l1 l2