2017-11-25 2 views
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 

답변

1

귀하의 내부 호출하지 rev_app'에를 : 여기에 내가 가진하지만 난 형 오류가 계속 것입니다. 그래서 코드는 말에 다소 유사하다

측면 주석으로
let rec f x = ref (f x) 

, 그것은 좋은 매너는 당신이 받고있어 실제 오류를 인용 할 수 있습니다. "유형 오류"라고 말하는 것은별로 도움이되지 않습니다.