我一直在研究問題67A of 99 Haskell Questions。現在的問題是給定字符串構建樹:"x(y,a(,b))" => Branch 'x' (Branch 'y' Empty Empty) (Branch 'a' Empty (Branch 'b' Empty Empty))
一種解決方案使用Parsec
是如下:在GHCi中找不到Parsec模塊
import Text.Parsec.String
import Text.Parsec hiding (Empty)
pTree :: Parser (Tree Char)
pTree = do
pBranch <|> pEmpty
pBranch = do
a <- letter
char '('
t0 <- pTree
char ','
t1 <- pTree
char ')'
return $ Branch a t0 t1
pEmpty =
return Empty
stringToTree str =
case parse pTree "" str of
Right t -> t
Left e -> error (show e)
但是,我GHCI既不能找到Text.Parsec.String
也不Text.Parsec
。這些模塊是否過時了? 我GHCI版本6.12.3是
thx,安裝parsec-3後編譯好。但是,現在運行它時會出現一個'意外的','期待的'(「'異常' – manuzhang 2012-01-30 04:58:14
)輸入」x(y,a(,b))「不能由給定的解析器解析, x(y(,),a(,b(,)))「 – 2012-01-30 05:55:41
thx再次,我在Haskell的99個問題上發佈你的解決方案,那好嗎?如果不是,我會立即刪除它 – manuzhang 2012-01-30 08:49:17