[英]Flattening a list of lists in OCaml
我正在使用Ocaml實現此hoemwork功能:
List
模塊 'a list list -> 'a list
[[1,2,3],[45]] => [1,2,3,4,5]
和[[[1,2,3],[4,5]],[[6,7]]] => [[1,2,3],[4,5],[6,7]]
我不確定從哪里開始,有人可以給我一些建議嗎? 謝謝
我看不到List.flatten
和您的函數之間的區別。
要回答您的問題:與列表一樣,請嘗試考慮基本情況:
將所有內容包裝成圖案匹配,煮幾個小時,然后就完成了:-)
托馬斯給出了很好的建議。 您的基本操作是將一個列表追加到另一個列表。 首先將此功能編寫為單獨的功能可能會有所幫助。 它看起來像這樣:
let rec myappend a b =
match a with
| [] -> (* Empty list prefixed to b (easy case) *)
| ahead :: atail -> (* Recursive case *)
有了自己的append函數,您可以執行另一級別的遞歸,以追加Thomas所建議的所有頂級列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.