我試圖寫一些讀取Lambda表達式並輸出一個測試版縮小版。 Lambdas將按如下方式鍵入:\ variable - >表達式和應用程序的形式(表達式)(表達式)。所以,如果「\」是在字符串的開頭找到它知道來處理Lambda和如果「(」發現它知道處理申請Haskell中如何分析撇號/字符文字?
我已經定義爲Lambda表達式類型:
data Expression = Variable String
| Lambda Expression Expression
| Apply Expression Expression
這是我在寫一個函數讀取輸入
processInput :: String -> Expression
processInput ('\':input) = processLambda input
processInput ('(':input) = processApply input
processInput str = Variable str
第一次嘗試當我嘗試加載這一功能,我得到
lexical error in string/character literal at ':'
所以我試圖用後衛來代替:
processInput input
| head input == '\' = processLambda (tail input)
| head input == '(' = processApply (tail input)
| otherwise = Variable input
,但得到
lexical error in string/character literal at character ' '
我不知道這有什麼錯要麼這些功能。