haskell - 如何将二叉树的字符串表示读回树中?
问题描述
我有以下代码接受输入作为给出的示例ex
并创建一个具有给定类型的树:
data QA = Leaf String | Question QA String QA
ex :: QA
ex = (Question
(Question (Leaf "Marie Curie") "Is she a scientist?" (Leaf "Queen Elisabeth II"))
"Is she from Europe?"
(Question (Leaf "Marilyn Monroe") "Is she an actress?" (Leaf "Hilary Clinton")))
showQa :: QA -> String
showQa (Leaf x) = "(" ++ x ++ ")"
showQa (Question left x right) = "(" ++ x ++ showQa left ++ showQa right ++ ")"
instance Show QA where
show = showQa
然后我使用 showQa 函数将树转换为字符串,以便能够将其存储在文件中,并将以下输出作为字符串:
"(Is she from Europe?(Is she a scientist?(Marie Curie)(Queen Elisabeth II))(Is she an actress?(Marilyn Monroe)(Hilary Clinton)))"
问题是当我再次从文件中读取字符串时,如何将此字符串转换为具有原始类型的原始树。
解决方案
推荐阅读
- python - 如何使用 Python 封装实现 Stack?
- java - Playframework 2.6.x FormUrlEncoded 在发布操作中返回空值
- postgresql - postgresql中的嵌套if语句不起作用
- json - 将 csv (;) 分隔文件转换为 Json 文件
- sql - 当组合列的日期计数大于2时,如何检查一列的数据是否存在
- jpa - Criteria API 连接问题:不包含关系列的实体不能“连接”
- python - 如何使用 pygame 制作简单但有效的 Hitbox
- random - 用 awk 中的随机日期值替换列的相同日期值
- html-lists - 我打算通过 JS 使用 innerHTML 属性在我的导航选项卡中插入无序列表,但是它不起作用
- javascript - 使用 jszip 读取 Zip 文件的文件夹和文件