小编Reu*_*ter的帖子

避免具有大量相似构造函数的数据类型的代码重复

我正在用 Haskell 编写一个简单的解析器,并使用这种保存解析结果的数据类型。

data AST = Imm Integer
    | ArgName String
    | Arg Integer
    | Add AST AST
    | Sub AST AST
    | Mul AST AST
    | Div AST AST
    deriving (Show, Eq)
Run Code Online (Sandbox Code Playgroud)

当我想在树上映射以使用映射用其引用号替换变量名称时,问题就出现了。我必须写这段代码

refVars :: M.Map String Integer -> AST -> Maybe AST
refVars d (ArgName s) = case d M.!? s of
                            Just n -> Just (Arg n)
                            Nothing -> Nothing
refVars _ (Imm n)     = Just $ Imm n
refVars _ (Arg n)     = Just $ Arg …
Run Code Online (Sandbox Code Playgroud)

parsing haskell

8
推荐指数
1
解决办法
150
查看次数

标签 统计

haskell ×1

parsing ×1