【发布时间】:2017-11-25 09:26:41
【问题描述】:
我需要编写一个函数,它将两个可变列表作为输入,并将第一个列表反转附加到第二个列表作为输出。类型定义为:
type 'a mylist = 'a listcell ref
and 'a listcell = Nil | Cons of 'a * ('a mylist)
我知道如何反转常规列表,但在编写一个通过破坏性更改第一个列表来实现此目的的函数时有些困惑。 这是我所拥有的,但我不断收到类型错误:
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
【问题讨论】: