Используйте Parsec, чтобы написать новую функцию "parse:: String -> Stm"

У меня есть курсовая работа, которая требует от меня написать новую функцию parse:: String -> Stm. В Parsec уже есть функция parse, поэтому я должен импортировать квалифицированный parsec, чтобы parse возвращал мою функцию-обертку. Функция-обертка должна проанализировать входную строку в функции разбора Parsec и распаковать результат из возвращенной монады. Это код для моей функции-оболочки. Как я могу гарантировать, что когда parse вызывается, он возвращает мою функцию-обертку.

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

1 ответ

Решение

Делайте именно то, что сказано в инструкции:

import qualified Text.Parsec

parse :: String -> Stm
parse str =
  case Text.Parsec.parse procParser "" str of
    Left e  -> error $ show e
    Right r -> r
Другие вопросы по тегам