【发布时间】:2022-01-06 19:00:42
【问题描述】:
我正在尝试实现 menu 函数,该函数返回来自自定义数据类型 Page 的所有标题
data Page = Text String
| Title String [Page] deriving(Show)
menu :: Page -> [String]
menu (Text a) = []
menu (Title name content ) = [name]
但我也希望此功能也适用于某些“层次结构”的页面,例如index:
index = Title "Home" [
Title "Welcome!"[
Text "Hello World!",
Title "Lorem"[Text "ipsum"]],
Title "dolor"[
Title "no title" [Text "Haskell"],
Title "Look!" [Text "test"]],
Title "Finish" [Text "It will be look great"]]
我为此做了一些函数,但我不知道如何开始递归“层次结构”Page
menu :: Page -> [String]
menu (Text a) = []
menu (Title name content ) = [name]
输出是
*Main> menu index
["Home"]
但是我可以列出index 中的所有Title 吗?
非常感谢您的回答!
【问题讨论】:
-
你有一个页面列表;在上面映射
menu,你会得到一个列表列表。连接这些列表,然后将name添加到结果中。