1
我试图实现自己的列表模块如下:OCaml的 - 反向列表
type 'a my_list =
| Item of ('a * 'a my_list)
| Empty
我已经实现的一些功能,我现在想创建一个列表倒车功能为我的模块这将是这样的:
let rec rev = function
| Empty -> (*return reversed list*)
| Item(i, remnant) -> (*recursive call to rev*)
而且,我不应该使用列表操作,如“::”,“[]”和“@”。
编辑,我的尝试:
let rec rev_append l1 l2 = match l1 with
| Empty -> l2
| Item(i, remnant) -> rev_append remnant Item(i, l2)
let rev l = rev_append l Empty;;
但这不工作,没有在传递给递归调用的第二个参数的错误:“项目(一,二级)”的错误是“构造函数Item需要1个参数,但在这里应用于0个参数“。
没有使用'::'构造列表的技巧吗?似乎这对列表的定义至关重要。 –
我编辑了我的帖子,向你展示了我的尝试。 – Kernael