如何在ocaml中附加两个可变列表 键入'a mylist='a listcell ref 和'a listcell=Nil | Cons of'a*('a mylist) 设l1=(ref(Cons(1,ref)(Cons(2,ref NilЮЮ))) 设l2=(ref(Cons(3,ref)(Cons(4,ref Nil ')))) 让rec附加l1和l2= 将l1与 |{contents=Nil}->(l1:=!l2;l1) |{contents=Cons(h,t)}->append t l2

如何在ocaml中附加两个可变列表 键入'a mylist='a listcell ref 和'a listcell=Nil | Cons of'a*('a mylist) 设l1=(ref(Cons(1,ref)(Cons(2,ref NilЮЮ))) 设l2=(ref(Cons(3,ref)(Cons(4,ref Nil ')))) 让rec附加l1和l2= 将l1与 |{contents=Nil}->(l1:=!l2;l1) |{contents=Cons(h,t)}->append t l2,ocaml,mutable,refs,Ocaml,Mutable,Refs,这就是我到目前为止得到的,目标是将l2附加到l1 我可以遍历到l1的末尾,用l2替换ref。。。哪一个 这就是我想做的。但由于某种原因,我失去了一切 在那之前 如果您通过递归调用到达列表末尾,l1指的是第一个列表的Nil元素,而不是第一个列表的开头,我们将不胜感激 您可以通过使用append中的助手函数来解决此问题,该函数与当前的append函数类似。但在最后,它从外部append函数返回原始l1

这就是我到目前为止得到的,目标是将l2附加到l1 我可以遍历到l1的末尾,用l2替换ref。。。哪一个 这就是我想做的。但由于某种原因,我失去了一切 在那之前


如果您通过递归调用到达列表末尾,
l1
指的是第一个列表的
Nil
元素,而不是第一个列表的开头,我们将不胜感激

您可以通过使用
append
中的助手函数来解决此问题,该函数与当前的
append
函数类似。但在最后,它从外部
append
函数返回原始
l1