繁体   English   中英

Ocaml 函数解析列表列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM