尝试制作基本的haskell程序

问题描述 投票:-4回答:1

我正在尝试编写一些haskell代码来确定字符串是偶数还是奇数。

even l evaluates to S 0 if l is a list of even length and evaluates to 0 if l is not of even length, for example

even a1:a2:a3:a4:#      --->   S 0    
even a1:a2:a3:a4:a5:#   --->   0    

我不确定要去哪里,任何帮助将不胜感激。解释器看起来像这样

execCBN :: Program -> Exp
execCBN (Prog e) = evalCBN e

evalCBN :: Exp -> Exp
evalCBN (EApp e1 e2) = case (evalCBN e1) of
    (EAbs i e1') -> evalCBN (subst i e2 e1')
    e1' -> EApp e1' e2
evalCBN (EIf e1 e2 e3 e4) = if (evalCBN e1) == (evalCBN e2) then evalCBN e3 else evalCBN e4
evalCBN (ELet i e1 e2) = evalCBN (EApp (EAbs i e2) e1) 
evalCBN (ERec i e1 e2) = evalCBN (EApp (EAbs i e2) (EFix (EAbs i e1)))
evalCBN (EFix e) = evalCBN (EApp e (EFix e)) 
evalCBN (EMinusOne e) = case (evalCBN e) of
    ENat0 -> ENat0
    (ENatS e) -> e
evalCBN (ENatS e') = ENatS (evalCBN e')
evalCBN x = x
haskell programming-languages interpreter
1个回答
0
投票

首先,这是一些建议,可改善您将来在StackOverflow上进行的问答:

© www.soinside.com 2019 - 2024. All rights reserved.