浏览代码

Implement function to evaluate arithmetic expressions

DricomDragon 5 年之前
父节点
当前提交
d92b76b4e8
共有 1 个文件被更改,包括 8 次插入1 次删除
  1. 8 1
      functor.hs

+ 8 - 1
functor.hs

@@ -1,3 +1,10 @@
 -- Slide 64
 
-Expr a = Val a | Inc (Expr a) | Dec (Expr a) | Inv (Expr a) | Neg (Expr a)
+data Expr a = Val a | Inc (Expr a) | Dec (Expr a) | Inv (Expr a) | Neg (Expr a)
+
+evaluate::(Fractional a)=>Expr a -> a
+evaluate (Val x) = x
+evaluate (Inc e) = 1 + evaluate e
+evaluate (Dec e) = (evaluate e) - 1
+evaluate (Inv e) = 1 / (evaluate e)
+evaluate (Neg e) = negate (evaluate e)