[英]Ocaml function parsing list of lists
我正在尝试在 Ocaml 中构建一个函数来解析列表列表,例如从 [[0;1];[3;4;8]] 到 [0;1;3;4;8]。 我试图做这样的事情:
#let rec parse listoflists=
match listoflists with
[[]]->[]
|[h::t]->h::parse [t];;
但它不起作用......我还需要一个解释,因为我不明白列表列表实际上是如何工作的......
我不必使用 Ocaml 库函数。
如果您能理解列表,那么我声称您已经了解列表的列表。 这就是递归的美妙之处。
唯一真正的困难(如我所见)是跟踪您正在谈论的列表。 您的代码需要使用列表本身,它由一个列表(称为h
)和其他一些列表组成。 它还需要使用列表 h ,它由一些元素(称为hh
)和一些其他元素组成。
在我看来,有三种有趣的情况:(a) 列表列表是空的; (b) 列表列表h
的第一个元素为空 (c) 列表列表和h
都不为空。
您没有处理所有这三种情况。 这是查看您的代码可能不起作用的一种方法。
这是match
三种情况的匹配项,这可能会有所帮助:
match listoflists with
| [] -> ... (* List of lists is empty *)
| [] :: t -> ... (* First list h is empty *)
| (hh :: ht) :: t -> ... (* Neither is empty *)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.