我試圖編寫一個函數,它需要一個整數和一個三元組,並返回給定位置的三元組元素(練習5.3從Hickey的書中)。 Triplet應該能夠包含不同類型的元素。我認爲,如果我編寫3個小函數,每個函數都返回三元組中的特定元素,並使我的大函數相應地返回其中的一個,那麼它會執行這個技巧,但它不起作用。OCaml元組中的意外類型不匹配
我試圖擺弄這個「eta擴展」的概念,但我沒有得到它。
let nth1 (a, _, _) = a
let nth2 (_, b, _) = b
let nth3 (_, _, c) = c
let nth i = match i with
| 1 -> nth1
| 2 -> nth2
| _ -> nth3
let main = printf "%d\n" (nth 1 ("hello", 2, 'c'))
所以它應該在這裏寫「2」。有什麼建議?
編輯,因爲這不是真正的價值限制,稱它這樣會迷惑讀者。 –