1
我抓我的頭弄清楚這個功能這個函數的類型是如何推斷的?
let make_rec f_norec =
let rec f x = f_norec f x in
f
這應該是
val make_rec : (('a -> 'b) -> 'a -> 'b) -> 'a -> 'b = <fun>
的簽名。
注意有一個奇怪的遞歸定義。當然,我錯過了一些知識。任何人都可以告訴我如何計算函數的類型(就像類型推斷系統一樣)?
非常感謝。
非常感謝。這非常有教育意義。 – tfboy
我不明白,爲什麼最後一對括號可以省略? – Indicator
@Indicator這就是正確的associative - >操作符的工作原理,它是這樣做的,因爲如果你有一個函數'f :: a - > b - > c'那麼這意味着如果你只提供了一個參數,你會得到一個函數'b - > c'。這是咖啡。 OTOH,如果類型是'(a - > b) - > c'',這意味着你有一個參數函數,它接受另一個函數'a - > b'並返回一個'c'。 – Ingo