Я изучаю Parsec
и хочу попрактиковаться в реализации функции trim
. Вот мой код:Как реализовать функцию обрезки с использованием Parsec в haskell?
module Trim where
import Text.ParserCombinators.Parsec hiding(spaces)
trim = reverse.trimFront.reverse.trimFront
trimFront :: String->String
trimFront = readExpr trimParser
readExpr :: Parser String->String->String
readExpr parser input = case parse parser "trim" input of
Left err -> error $ show err
Right val -> val
spaces = many space
trimParser :: Parser String
trimParser = spaces >> many anyChar
мой вопрос, как я мог бы реализовать trim
в функции trimParser
непосредственно, без необходимости реализовывать trimFront
первый?
Я предполагаю, что trimParser должен анализировать любую строку, включая строки, содержащие пробелы, игнорируя конечные и ведущие пробелы. Если это так, самый простой способ - это просто «разобрать» строку безоговорочно, а затем применить функцию trim к результату; 'отделка <$> много любойChar'. – user2407038
Это действительно очень хорошая идея сказать, что именно должен делать ваш код, а не просто сбрасывать его на стол. – dfeuer