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