【发布时间】:2019-09-23 05:31:58
【问题描述】:
我是在 Haskell 中创建新类型的新手。这是我创建的类型:
data Tag = Table | Td | Tr deriving(Show)
data Table = Item Tag [Table] | Text String
Tag 数据类型还有一个显示函数,它将值打印到字符串中。我知道这种类型是递归工作的,因为 Table 在第一个值中使用 [Table]。我希望能够列出所有 Tag 元素和最里面的元素,这将是 Text 或一个空列表。
例如:
>example = Item Table [Item Td [Item Tr [Text "hello"]]]
>tableList example
["Table","Td","Tr","hello"]
这是我迄今为止尝试过的:
tableList :: Table -> [String]
tableList (Item tag _) = [x | x <- show tag]
但这仅显示"table"。我不确定如何访问所有内部 Tag 值。
【问题讨论】:
-
Tag类型的定义在哪里? -
另外,你的意思是
example = Item table [Item t [Item r [Text "hello"]]]? -
@JosephSible 我编辑了这篇文章。
data Tag = table | t | r。 Tag 有一个 show 函数,它只打印字符串中的值。我也改变了例子。谢谢你接听! -
这不是标签的有效定义。数据构造函数不允许以小写字母开头。
-
@JosephSible 我的错误,之前没有编译过。
标签: haskell types nested nested-lists