haskell - 遍历haskell中嵌套列表的新数据类型
问题描述
我是在 Haskell 中制作新类型的新手。这是我创建的类型:
data Tag = Table | Td | Tr deriving(Show)
data Table = Item Tag [Table] | Text String
Tag 数据类型还有一个 show 函数,它将值打印到字符串中。我知道这种类型是递归工作的,因为 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
值。
解决方案
您的递归类型需要一个递归函数来遍历它:
tableList :: Table -> [String]
tableList (Item tag xs) = show tag:concatMap tableList xs
tableList (Text t) = [t]
推荐阅读
- python - matplotlib - 比较条形图形状的 3 个数据框
- javascript - 如何使用 setState 将更多对象添加到 Array Object 状态?
- twitter - 如何使用 ublock origin 过滤推特“关注主题”帖子
- javascript - 如何在本机反应中计算两个时刻之间的差异
- pyarrow - 可以用 pyarrow 从 3 个整数数组中创建一个 Date32Array,用于天、月和年吗?
- python - 捕获字符串中的子字符串 - 动态
- python - gcloud monitoring_v3 查询在 AttributeError 'WhichOneof' 上失败
- angular - Angular 11 DI - 未定义 AuthService
- python - AWS Neptune python gremlin 证书验证失败
- python - pygame从opencv相机旋转相机流