試圖動態評價習慣F#我試過小例子,我的下一步就是寫幾個函數邏輯運算/評估,現在我有這個結構F#類型和基本的計算
type Expr =
| True
| False
| Not of Expr
| And of Expr * Expr
它應該是顯而易見的,我想實現的目的是:能夠封裝不同的功能,如Not
和And
用於像And(And(True, Not(False)), True)
這樣的計算,但目前我不明白(這是我第一次打這樣的「複雜」功能代碼)如何使用這個結構並編寫適當的方法,例如我可以寫評估
let evalLogic (expr : Expr) : bool =
match expr with
| True -> true
| False -> false
| _ -> false (* eval the expression which is not "atomic" *)
,然後作爲一種方法
let And (left : Expr , right : Expr) : Expr =
let value = evalLogic(left) && evalLogic(right)
match value with
| true -> True
| false -> False
但我知道,這是廢話,不執行此正確的方式!你能否給我一個提示,告訴我如何達到預期的行爲,並描述如何擴展它?
+1我覺得函數式編碼在開始的時候非常怪異而且非常痛苦,因爲我編寫C++和C#已經有半年了,但是你的解釋很棒,F#對我來說越來越有趣了;-) - Can你進一步解釋我,是否有可能** NOT **來評估'Constant'直到真正需要,例如我正在使用'True'和'False',並且只在執行像'evalConst(e:Constant)'這樣的東西時才被評估。 –