私はラムダ式を読み、ベータ版を出力するものを書こうとしています。 Lambdaは次のようにタイプされます:\ variable - >式とアプリケーションは(式)(式)の形式になります。だから、「\」は、それがラムダを処理するために知っている文字列の先頭にと「(」がアプリケーションを処理するために知って発見された場合に発見された場合アポストロフィ/文字リテラルはHaskellでどのように解析されますか?
私は定義されたラムダ式の型を持っています。
data Expression = Variable String
| Lambda Expression Expression
| Apply Expression Expression
ここで私は、この関数をロードしようとすると、私は
lexical error in string/character literal at ':'
を取得する入力
processInput :: String -> Expression
processInput ('\':input) = processLambda input
processInput ('(':input) = processApply input
processInput str = Variable str
を読み取るための関数を書くでの私の最初の試みです
は、だから私は、代わりにガードを使用してみました:
processInput input
| head input == '\' = processLambda (tail input)
| head input == '(' = processApply (tail input)
| otherwise = Variable input
をしかし、私は、これらの機能のいずれかで間違って何見当がつかない
lexical error in string/character literal at character ' '
を得ました。