我已經決定檢查FParsec並嘗試爲λ表達式編寫解析器。事實證明,渴望使得遞歸解析變得困難。我該如何解決這個問題? 代碼: open FParsec
type λExpr =
| Variable of char
| Application of λExpr * λExpr
| Lambda of char * λExpr
let rec FV = funct
在下面的類型聲明中約束(Stream s Identity t)是什麼意思? parse :: (Stream s Identity t)
=> Parsec s() a -> SourceName -> s -> Either ParseError a
什麼是Stream在下面的類聲明中是什麼意思。我完全迷失了。 class Monad m => Stream s m t | s
我在48小時的教程中嘗試編寫自己的方案,並且作爲haskell的新成員,這非常困難。 我目前正在研究一個問題,我應該添加解析方案向量的能力(3.4節練習2)。 我使用這個數據類型: data LispVal = Atom String
| List [LispVal]
| Vector (Array Int LispVal)
要解析,我在尋找「#(」然後
我想在使用Parsec的Haskell中進行一些解析。我有一些在我的代碼分析器,但我就在其中得到一個錯誤: expression2 =
do (operator lexer "|"
a <- alternate
as <- expression2
return $ a:as
) <|> return []
錯誤是parse error on in