我正在學習與Write yourself a scheme haskell。 我目前正試圖在計劃中實施char識別。字符是#\<character>或#\<character-name>,如#\a或#\或#\space。 所以我寫了下面的代碼: -- .. some code ..
data LispVal = Atom String
| List [LispVal]
問題,我有以下ADT: type Program = [Expr]
data Expr =
Num Int
| Bool Bool
| Binding String Expr
deriving (Show)
這裏有一個變量綁定表達式形式lhs is rhs的,解析器。 binding :: Parser Expr
binding = do
的BNF那場比賽的函數調用鏈(如x(y)(z)...): expr = term T
T = (expr) T
| EMPTY
term = (expr)
| VAR
它翻譯成秒差距的程序,看起來很棘手。 term :: Parser Term
term = parens expr <|> var
expr :: Parser Term
expr = do
輸入意外結束我嘗試解析與關鍵詞之間的一系列數據下面的文本文件: many text many text many text
BEGIN
T LISTE2
1 154
2 321
3 519
4 520
5 529
6 426
END
many text many text many text
通過下面的哈斯克爾程序 import Text.Parsec
import
我明白Parsec模塊的parse功能,這需要一個規則的說法,錯誤信息,並輸入字符串: parse rule text = Parsec.parse rule "(source)" text
不過,我不明白的Parsec.Parsec含義,或者它是如何的不同。 Parsec.ParsecT。爲什麼自定義分析器的類型簽名使用這個名稱? 例如,在從this blogpost採取下面的代碼片段, m