List 打印列表时出现OCaml堆栈溢出错误

List 打印列表时出现OCaml堆栈溢出错误,list,printing,ocaml,List,Printing,Ocaml,我正在尝试用OCaml打印列表。我的列表由我定义的称为Elem的结构的元素组成。在某个地方,我得到了一个堆栈溢出错误,我无法找出它 let rec pretty_print tr = let rec trc_list_to_str trc out = match trc with | [] -> out | t::ts -> trc_list_to_str ts (out ^ pretty_print t) in "[" ^ pretty_pr

我正在尝试用OCaml打印列表。我的列表由我定义的称为Elem的结构的元素组成。在某个地方,我得到了一个堆栈溢出错误,我无法找出它

let rec pretty_print tr =
    let rec trc_list_to_str trc out = match trc with
      | [] -> out
      | t::ts -> trc_list_to_str ts (out ^ pretty_print t)
    in "[" ^ pretty_print tr ^ "]"

  and print_single_trace (st: Ast.Elem.t) =
    PrettyPrinting.print_identifier st.label ^
    PrettyPrinting.print_literal st.payload

在您当前的代码中,
trc\u list\u to\u str
功能未使用,因此,
pretty\u print\u trace
功能可以理解为

let rec pretty_print_trace tr =
  in "<Trace>\n" ^ pretty_print_trace tr ^ "\n</Trace>\n"
let rec pretty\u print\u trace tr=
在“\n”^pretty\u print\u trace tr^”中\n\n
因此,
pretty\u print\u trace
函数无限地调用自己,而从不查看试图计算的参数

看起来您交换了
t
ts
。尝试使用
ts::t