使用 Parsec 编写新函数 "parse :: String -> Stm"

Use Parsec to write a new function "parse :: String -> Stm"

我有一个课程作业要求我编写一个新函数 parse::String -> Stm。 Parsec 已经有一个解析函数,所以我应该导入合格的 parsec 以便解析 returns 我的包装函数。 包装函数需要将输入字符串解析为 Parsec 的解析函数,并从返回的 monad 中解压结果。这是我的包装函数的代码。 我如何确保在调用 parse 时,它​​ returns 我的包装函数。

parseString :: String -> Stm
parseString str =
   case parse procParser "" str of
     Left e  -> error $ show e
     Right r -> r

完全按照说明进行操作:

import qualified Text.Parsec

parse :: String -> Stm
parse str =
  case Text.Parsec.parse procParser "" str of
    Left e  -> error $ show e
    Right r -> r