如何使用parsec(Haskell)进行if验证由可选选项生成的输入?

如何使用parsec(Haskell)进行if验证由可选选项生成的输入?,haskell,parsec,Haskell,Parsec,我有这个代数数据类型: 数据算术=Sum Int | Mult Int 衍生节目 我想这样做: 解析器算法 parseArith=do a试试看 的文档与您的用例相同。作为Franky答案的一个轻微替代,请选择稍后返回所需的构造函数 parseArith :: Parser Arithmetic parseArith = do a <- many1 digit spaces op <- (string "+" >> return

我有这个代数数据类型:

数据算术=Sum Int | Mult Int 衍生节目 我想这样做:

解析器算法 parseArith=do a试试看


的文档与您的用例相同。

作为Franky答案的一个轻微替代,请选择稍后返回所需的构造函数

parseArith :: Parser Arithmetic
parseArith = do
    a <- many1 digit
    spaces
    op <- (string "+" >> return Sum)
      <|> (string "*" >> return Mult)
    spaces
    b <- many1 digit
    spaces
    return $ op (read a) (read b)
parseArith :: Parser Arithmetic
parseArith = do
    a <- many1 digit
    spaces
    op <- (string "+" >> return Sum)
      <|> (string "*" >> return Mult)
    spaces
    b <- many1 digit
    spaces
    return $ op (read a) (read b)