【问题标题】:Reverse Mutable List Ocaml反向可变列表 Ocaml
【发布时间】: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

【问题讨论】:

    标签: list ocaml mutable


    【解决方案1】:

    你内心的呼唤是rev_app,而不是rev_app'。所以你的代码有点类似于说:

    let rec f x = ref (f x)
    

    作为旁注,引用您遇到的实际错误是一种礼貌。仅仅说“类型错误”并没有太大帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-05
      • 1970-01-01
      • 2011-07-24
      • 2011-07-27
      • 1970-01-01
      • 2011-11-14
      • 1970-01-01
      相关资源
      最近更新 更多