【发布时间】:2021-12-15 17:43:35
【问题描述】:
我必须将函数数组转换为 OCaml 上的列表,这是我目前所拥有的,但它没有通过测试,谁能帮助我的代码有什么问题以及我应该改用什么方法?
我首先编写了一个函数来返回除第一个值之外的树,然后获取头部并将其与其余部分的头部相结合以创建一个列表。我是不是搞错了?
exception Subscript
let top = function
| Lf -> raise Subscript
| Br (v,_,_) -> v
let rec pop = function
| Lf -> raise Subscript
| Br (_, Lf, Lf) -> Lf
| Br (_, lt, rt) -> Br (top lt, rt, pop lt)
let rec listofarray = function
| Br (v, t1, t2) -> v :: (listofarray (pop (Br(v, t1, t2))))
| Lf -> []
【问题讨论】:
-
了解哪些测试失败将非常有价值。
-
包含树数据类型的定义可能会有所帮助。我可以推断它类似于
type 'a tree = Lf | Br of 'a * 'a tree * 'a tree,但在您的问题中包含它不会使代码示例过长。