有什麼方法可以更新綁定在全局範圍內的變量在一個let-in-end表達式中? 例如,如果我有一個全局變量: val playerScore = 0;
,然後將功能: fun hit (option:int) =
if option = 2 then
printStay(playerScore, dealerScore)
else
let
我試圖運行一個函數subst(tr,v1,v2),它返回一個新的ntree,其中v1的所有值都被v2替換爲輸出樹。 datatype 'a ntree = leaf of 'a | node of 'a ntree list;
fun map(f, []) = [] | map(f,x::t)=f(x) :: map(f,t);
fun subst(leaf(d), v1, v2) = i
我有一個集合和映射作爲不平衡二叉樹的實現。由於集和地圖是如此相似,其實我只寫了一個實現了從無到有的地圖,然後以一般實現集作爲地圖從鍵單位: signature EQ =
sig
type t;
val eq : t * t -> bool;
end;
signature ORD =
sig
include EQ;
val lt : t * t
說我有一個數據類型,它看起來像 datatype IntLt = ltObj of int * int * (int * int -> bool)
也就是說,這個對象是一對整數與他們相應的操作。有沒有辦法在創建ltObj時自動調用帶有兩個參數的函數,並在結果爲false時引發異常? 也就是說,我正在尋找數據類型構造的構造函數類型過程,類似於Python中的__init__或C/C++/Java
基本上這個函數將一個參數作爲一個字符,數字並檢查它是否在List中? let rec (member: a -> List a -> Bool) x =
| [] -> False
| Cons y ys -> if x == y then True else member x ys
;;
我得到了解決方案,但它似乎太模糊。 任何人都可以告訴我如何在這種特殊情況下使用Cons運算符? 感