【发布时间】:2018-05-03 22:49:48
【问题描述】:
首先,我想让您知道我对 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]”与“Data.Text.Internal.Text”匹配;
预期类型:Data.Text.Internal.Text;
实际类型:字符串 - 在‘parse’的第二个参数中,即‘input’ 在‘($)’的第二个参数中,即‘parse prose input’ 在“do”块的 stmt 中:print $ parse prose input
我已经使用“OverloadedStrings”来尝试解决这个问题,但它似乎不起作用。此外,任何有关 attoparsec 入门示例或教程的指导都会非常有帮助!
【问题讨论】:
标签: parsing haskell attoparsec