我是 Ocaml 的新手,并定义了如下嵌套列表:
type 'a node = Empty | One of 'a | Many of 'a node list
现在我想定义一个包装函数,将方括号包裹在嵌套列表的一阶成员周围。例如。wrap(Many [ one a; Many[ c; d]; one b; one e;] ) 返回 Many [Many[one a; 空的]; 许多[许多[c;d]; 空的]; 许多[b; 空的]; 许多[e; 空的]]。这是我的代码:
let rec wrap list = function
Empty -> []
| Many[x; y] -> Many [ Many[x; Empty]; wrap y;];;
但是我在最后一个表达式中遇到错误:此表达式的类型为 'a 节点,但预期的表达式为 'b 列表类型。请帮忙。