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