2
我仍然在学习Haskell,这个问题看起来很基本,但是它一直在跺脚。使用Haskell的简单解释器
鉴于以下
data Term =
Number Integer
| Abs Term
| Plus Term Term
| Mult Term Term
deriving (Eq, Show)
我想创建一个解释器,使得如果我打电话,例如,
evaluate (Plus (Number 10) (Number 10))
它将返回20.下面是我到目前为止
myabsolute :: Integer -> Integer
myabsolute n = if n >= 0 then n else -n
evaluate :: Term -> Integer
evaluate Plus = evaluate(t1) + evaluate(t2)
evaluate Mult = evaluate(t1) * evaluate(t2)
evaluate Abs = myabs(evaluate(t1))
evaluate _ = 0
我很困惑如何获得Number Integer
部分工作,因为我不知道如何提取数字并将它们映射到t1
和t2
的Plus
,Mult
和Abs
。
由于我还在学习,如果我正在做一些完全错误的事,请告诉我!
感谢您的帮助!现在我得到了我的plus,mult和数字工作。出于某种原因,我的腹肌给予的意思是“评估的方程式”有不同数量的参数“错误,你知道问题是什么吗?我已更新评估Abs t1 = myabs(评估(t1)) – user3277633 2014-11-09 17:42:55
我已修复它!非常感谢你的帮助 – user3277633 2014-11-09 17:49:14