1

在 title 模块中有一个叫做 parse 的函数。它有一个类型签名

parse :: String -> ParseResult ast

我已经研究了一段时间,但我不知道如何使用它。我确定它很明显,但我只是没有看到它。提前致谢!

4

1 回答 1

3

Language.Haskell.Exts.Parser 模块处理将 Haskell 源代码解析为适当的语法树。parse是处理String将 Haskell 源代码解析为类实例的通用函数Parseable。对于Exp(一个 Haskell 表达式), parse 定义为:

instance Parseable Exp where
    parse = parseExp

因此,要使用该parse函数,如果无法推断,只需提供类型声明。例如,要解析表达式“5 + 5”:

parse "5 + 5" :: ParseResult Exp

这相当于:

parseExp "5 + 5"

在 ghci 中,它们都返回:

ParseOk (InfixApp (Lit (Int 5)) (QVarOp (UnQual (Symbol "+"))) (Lit (Int 5)))
于 2013-08-01T01:47:40.823 回答