2016-07-07 66 views
0

我有一个字符串,我需要解析为Array或其他数组。Haskell:通过解析数据类型错误

这是我的代码有

import Test.HUnit (runTestTT,Test(TestLabel,TestList),(~?=)) 
import qualified Text.Parsec as P (char,runP,noneOf,many,(<|>),eof) 
import Text.ParserCombinators.Parsec 
import Text.Parsec.String 
import Text.Parsec.Char 
import Text.PrettyPrint.HughesPJ 
import Data.Maybe 
import Data.List.Split 

newtype CSV = CSV [Row] deriving (Show,Eq) 
type Row = [String] 

parseCSV :: Parser CSV 
parseCSV = error "not done yet" 

runParsec :: Parser a -> String -> Maybe a 
runParsec parser input = case P.runP parser() "" input of 
    Left _ -> Nothing 
    Right a -> Just a 

当我开始实现parseCSV功能

parseCSV = Just (CSV [[""]]) 

我得到这个错误:

Expected type: Parser CSV 
Actual type: Maybe CSV 

回答

1

试试这个:

parseCSV :: Parser CSV 
parseCSV = return $ CSV [[""]] 

错误说明了这一切:parseCSV应具有类型Parser CSV(来自类型签名),但Just (CSV [[""]])的类型为Maybe CSV

+0

它的工作!我会在几分钟内将其标记为正确答案,谢谢! –