遍历haskell中嵌套列表的新数据类型
我对在哈斯凯尔制作新样式很陌生。这是我创建的类型:遍历haskell中嵌套列表的新数据类型,haskell,types,nested,nested-lists,Haskell,Types,Nested,Nested Lists,我对在哈斯凯尔制作新样式很陌生。这是我创建的类型: data Tag = Table | Td | Tr deriving(Show) data Table = Item Tag [Table] | Text String 标记数据类型还有一个show函数,它将值打印到字符串中。我知道这种类型是递归工作的,因为Table在第一个值中使用[Table]。我希望能够列出所有标记元素和最里面的元素,它们将是文本或空列表 例如: >示例=项目表[Item Td[Item Tr[文本“hello”]]
data Tag = Table | Td | Tr deriving(Show)
data Table = Item Tag [Table] | Text String
标记数据类型还有一个show函数,它将值打印到字符串中。我知道这种类型是递归工作的,因为Table在第一个值中使用[Table]。我希望能够列出所有标记元素和最里面的元素,它们将是文本或空列表
例如:
>示例=项目表[Item Td[Item Tr[文本“hello”]]
>表格列表示例
[“桌子”、“Td”、“Tr”、“你好”]
这就是我迄今为止所尝试的:
tableList::Table->[String]
tableList(Item tag )=[x | x您的递归类型需要一个递归函数来遍历它:
tableList :: Table -> [String]
tableList (Item tag xs) = show tag:concatMap tableList xs
tableList (Text t) = [t]
类型标记的定义在哪里?另外,您的意思是示例=项目表[Item t[Item r[Text“hello”]]
?@JosephSible我编辑了这篇文章。data Tag=table | t | r
。Tag有一个show函数,它只打印字符串中的值。我还更改了示例。谢谢你捕捉到了这一点!这不是一个有效的标记定义。数据构造函数不允许以小写字母开头。@JosephSible我的错误,没有编译它以前。