2012-12-29 73 views
2

我正在嘗試編寫一個函數,以按指定的量增加一個可變的intOCaml中具有多個參數的函數

let increase var:int ref amount = (var := !var+amount;var);; 

這是我想出來的,但它會產生錯誤。什麼是正確的方法來做到這一點?

回答

6

您唯一的問題是在var類型的規格中。您需要使用圓括號:

# let increase (var: int ref) amount = var := !var + amount; var;; 
val increase : int ref -> int -> int ref = <fun> 

對於它的價值,類型規格是可選的。 OCaml會推斷出類型。

(我個人認爲有函數返回unit,這將使它類似於內置功能incr

+0

@gasche:'incr'具有輸入'INT REF - > unit'。它看起來像你的函數返回也是毫無意義的 - 它總是會返回'var' – newacct

+0

的確,我的錯誤。我同意函數返回是毫無意義的。 – gasche

相關問題