如何使用基本算术简化表达式?haskell中的代数类型
2
A
回答
1
您可以使用此处描述的技术:http://augustss.blogspot.com/2007/04/overloading-haskell-numbers-part-2.html。让你的类型成为necassary类型的类(Num,Fractional,Floating),以便 - ,+,*等适用于你的类型。然后,如果表达式树最终被构建,您可以对其进行操作以查看可以简化的内容。
3
我不确定你的意思,但是如果你有一个表达式数据类型,你可以定义一个递归的eval函数。在这种情况下,eval意味着简化。
例如,
data Exp = Lit Int
| Plus Exp Exp
| Times Exp Exp
eval :: Exp -> Int
eval (Lit x) = x
eval (Plus x y) = eval x + eval y
eval (Times x y) = eval x * eval y
一旦你添加变量的语言它变得非常有趣,但是这是一个表达式求值的最基本的形式。
0
模块expr其中
- 变量由字符串命名,假设为标识符。 类型变量=字符串
- 表达式的表达。数据Expr = Const整数 | Var变量 | Plus Expr Expr |减号Expr Expr | MULT Expr的Expr的 导出(式,显示)
及其简化诸如0 * E = E * 0 = 0 和1 * E = E * 1 = 0 + E = E + 0 = E-0 = e和简化常量子表达式,例如Plus(Const 1)(Const 2)将变为Const 3.我不希望将变量(或变量和常量)连接在一起:Var“st”是Var“s”中的一个独特变量。 (Plus(Var'x')(Const 0))= Var“x”
相关问题
- 1. Haskell错误代数类型
- 2. 类型类Haskell中的数据类型
- 3. Haskell中的函数类型
- 4. Haskell中的类型参数
- 5. 常量在Haskell代数数据类型
- 6. Haskell代数类型和函数转换
- 7. 代码中的Haskell类型检查
- 8. Haskell的类型类与参数类型
- 9. 类型/种类Haskell(也许)在代数数据类型中的混淆
- 10. 代表有效类型的Haskell数据类型
- 11. Haskell函数类型
- 12. 问题Haskell的数类型
- 13. Haskell类型类
- 14. 在函数中检查Haskell类型类
- 15. Haskell中的函数类型专业化
- 16. Haskell中的类型参数问题
- 17. haskell编程中的数据类型
- 18. Haskell中的数据类型设计
- 19. 当您在Haskell中定义代数数据类型时
- 20. 如何在Haskell中为代数数据类型实现“Ord”?
- 21. haskell类型类中的多个类型参数
- 22. Haskell中自定义数据类型的代码
- 23. Haskell中的类型比较
- 24. Haskell中的类型转换
- 25. Haskell中的类型问题
- 26. Haskell中的常量类型(++)
- 27. Haskell中的任何类型?
- 28. Haskell中的类型问题
- 29. Haskell中的输入类型
- 30. Haskell中的类型问题