【问题标题】:How to convert an expression in Haskell to a Tree structure to get information in the expression?如何将 Haskell 中的表达式转换为 Tree 结构以获取表达式中的信息?
【发布时间】:2015-09-14 20:07:43
【问题描述】:

有没有办法将 Haskell 语言中的表达式转换为类似树的格式并从每个节点中提取信息。或者为给定的表达式生成所有可能的树? 例如:加 5 3 这是树,其中 3 和 5 是叶节点,“add”作为根。所以我需要对上面的表达式进行分解,以便对表达式进行进一步的分析。 例如:* 知道我要“添加”的值是什么。 * 要知道我对给定数字执行的操作是什么(这里是“加法”,也可以是“减法”、“乘法”等。) 非常感谢您的帮助:)

【问题讨论】:

标签: regex haskell functional-programming


【解决方案1】:

你可以使用Template Haskell:

Language.Haskell.TH> runQ [e|3 + 5|]
InfixE (Just (LitE (IntegerL 3))) (VarE GHC.Num.+) (Just (LitE (IntegerL 5)))

haskell-src-exts:

Language.Haskell.Exts> parse "3 + 5" :: ParseResult Exp
ParseOk (InfixApp (Lit (Int 3)) (QVarOp (UnQual (Symbol "+"))) (Lit (Int 5)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 2012-01-15
    • 1970-01-01
    相关资源
    最近更新 更多