1. 程式人生 > >Haskell語言學習筆記(57)Parsec(4)

Haskell語言學習筆記(57)Parsec(4)

left 失敗 right identity parse div 狀態 匹配 出錯信息

Parser 類型

data ParsecT s u m a
type Parsec s u = ParsecT s u Identity
type Parser = Parsec String ()
  • data ParsecT s u m a
    ParsecT 帶四個類型參數:數據流類型 s,用戶狀態類型 u,底層Monad類型 m,返回類型 a。
    ParsecT 是一個Monad轉換器。
  • type Parsec s u = ParsecT s u Identity
    Parsec 類型是 ParsecT 類型的特化,底層Monad類型特化為 Identity。
  • type Parser = Parsec String ()
    Parser 類型是 Parsec 類型的特化,數據流類型特化為 String,用戶狀態類型為空類型 ()。

parseTest 函數

parseTest :: (Stream s Identity t, Show a)
          => Parsec s () a -> s -> IO ()
parseTest p input
    = case parse p "" input of
        Left err -> do putStr "parse error at "
                       print err
        Right x  -> print x
  • parseTest 函數調用 parse 函數對數據流進行解析。
  • 如果匹配失敗,打印出錯信息。
  • 如果匹配成功,輸出返回值。

Haskell語言學習筆記(57)Parsec(4)