Прежде всего я хотел бы сообщить вам, что я довольно новичок в Haskell и пытаюсь понять, как парсеры работают в haskell. Поэтому я в основном пытаюсь разобрать эту электронную книгу с http://www.gutenberg.org/files/57071/57071-0.txt и проанализировать текст. Как вывести количество английских слов, предложений и параграфов и тому подобное.
Вот мой код:
{-# LANGUAGE OverloadedStrings #-}
import Control.Exception (catch, SomeException)
import System.Environment (getArgs)
import Data.Attoparsec.Text
import Data.Char
import Control.Applicative ((<*>), (*>), (<$>), (<|>), pure)
data Prose = Prose {
word :: String
} deriving Show
prose :: Parser Prose
prose = do
word <- many' $ satisfy isAlphaNum
return $ Prose word
main :: IO()
main = do
input <- readFile "small.txt"
print $ parse prose input
Это мое сообщение об ошибке:
- Не удалось сопоставить тип Char [Char] с ‘Data.Text.Internal.Text’;
Ожидаемый тип: Data.Text.Internal.Text;
Фактический тип: String
- Во втором аргументе «parse», а именно «input»
Во втором аргументе «($)», а именно «разбирать ввод текста»
В блоке 'do' блока: выведите $ parse prose input
Я использовал «OverloadedStrings», чтобы попытаться исправить эту проблему, но, похоже, она не работает. Кроме того, любое руководство по примерам или учебникам по началу работы с attoparsec будет очень полезным!