1
A
回答
2
0
自动分化,如supercooldave给出的,是你想要的东西有点重量级。更好,更简单地从你想要的开始,无分化 - 一种将字符串解析到表达式树中,评估它们并显示它们的方法。一旦你有了这些,那么你只需要编码链规则和一些原语!
起初像
Expr = ENum Double | EVar String | EBinOp BinOp Expr Expr | EUnaryOp UnOp Expr
BinOp = Mul | Add | Div | Pow
UnOp = Diff String | Negate | Abs
5
这里是一个非常简单的版本试试结构简单;随意扩展 - 添加评价,几个变量,更多的功能,术语的分组,漂亮的印花,解析等
data Expr = Const Float | Var | Sum Expr Expr | Product Expr Expr
deriving Show
diff :: Expr -> Expr
diff (Const _) = Const 0
diff Var = Const 1
diff (Sum f g) = Sum (diff f) (diff g)
diff (Product f g) = Sum (Product f (diff g)) (Product (diff f) g)
+0
非常感谢。我正在尝试使用这个例子吗?但是我得到了一些错误。什么样的表达式可以和sum? – 2010-10-11 12:11:06
+0
@ sunshine:'Sum Var(Const 2)'是x + 2; '总和(产品变量Var)(产品Var(产品Var Var))'是x^2 + x^3。 – sdcvvc 2010-10-11 12:24:26
相关问题
- 1. 如何计算算术表达式
- 2. 算术表达式
- 3. 算术表达式语法
- 4. 解析算术表达式
- 5. BASH算术表达式
- 6. 技术需要编写一个算术表达式解析器
- 7. 将算术表达式表示为树
- 8. 如何计算算术表达式(String)并返回答案?
- 9. 如何在序言中进行算术表达式评估?
- 10. 如何在SQLAlchemy中对算术表达式进行ORDER BY?
- 11. 如何在Prolog中解决这个算术表达式难题?
- 12. 用于算术表达式的正则表达式
- 13. 正则表达式将算术表达式分解成部分
- 14. 最大化算术表达式
- 15. 幂算术常量表达式
- 16. 算术正则表达式中
- 17. C#表达式树简单算术
- 18. 算术双重表达式和c/C++
- 19. 评估算术语法树表达式
- 20. 药剂:(ArithmeticError)的算术表达式
- 21. 指针算术 - 相同的表达式?
- 22. Prolog中的算术表达式
- 23. Hudak's Haskell学院表达中的术语
- 24. 在正则表达式组上的算术运算javascript
- 25. 如何命名Haskell表达式的“=”?
- 26. 学习Haskell - 如何简化表达式?
- 27. 如何将算术表达式从SQL转换为JPQL?
- 28. 如何使用j2me评估算术表达式?
- 29. 如何禁止简单的策略展开算术表达式?
- 30. 如何简化基本的算术表达式?
这是功课? – 2010-10-09 18:06:30
你是什么意思“写算术表达式”?你只是想要一个玩具差异化引擎?还是你想要做更普遍的事情? – 2010-10-09 18:07:38
我想用建一个haskell.Say科学计算器,如果我们有数据类型的数据Expr的=瓦尔诠释 | Add Expr Expr | Mul Expr Expr 我们可以按如下方式表示1+(2 * 3):Add(Val 1)(Mul(Val 2)(Val 3)) 并使用类似下面的方法:: ExprInt size N)= 1个 大小(添加XY)=大小x +大小Y. 尺寸(Mul的XY)=尺寸X *大小Y.我们可以为日式做计算。(接到了一个幻灯片这个例子中)我要的是写这样的差异化表达式,以便于处理。我试过了,但我想我没有正确地理解这个概念。我该怎么做 – 2010-10-09 18:51:17