data Expr = Var Char | Tall Int | Sum Expr Expr | Mult Expr Expr | Neg Expr | Let Expr Expr Expr
deriving(Eq, Show)
这就是<代码>Expr的数据类型,我有几个问题。 I m suppose to parse expression such as *(Expr,Expr)
, 如数据类型定义所示。 然而,我确实在“creating”上存在一些问题:Expr
。 我利用配对模式来认识不同的东西。 另有一些法典:
parseExpr :: String -> (Expr, String)
parseExpr ( * : ( :x: , :y: ) :s) = (Mult (parseExpr [x] parseExpr [y]),s)
这显然不可行。 <代码>parseExpr的返回类型是,将部分成形代码作为Expr<>。 该法典右侧是问题。 页: 1 在问题得到解决之前,这一职能可以自我指责。
ANOTHER 问题在于,我不知道如何使用<代码>Var 和Tall
的配对模式。 我如何核对<代码> Var 是A-Z和之间的高位特征 Tall
是 0-9, 作为有效,Expr
?
一般来说,我只能看看看一下插图中的一些部分,以了解<条码>的内容。 I m处理。
Input like: parseProg "let X be 9 in *(X , 2)" Would spit out: Let (Var X ) (Tall 9) (Mult (Var X ) (Tall 2))