我正在尝试在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
答案 0 :(得分:0)
在您当前的代码中,trc_list_to_str
函数未使用,因此pretty_print_trace
函数可以读作
let rec pretty_print_trace tr =
in "<Trace>\n" ^ pretty_print_trace tr ^ "\n</Trace>\n"
因此,pretty_print_trace
函数无限地调用自己,而不会查看其尝试计算的参数
<Trace><Trace><Trace><Trace> … × ∞ </Trace></Trace></Trace></Trace>