我试图编写一个函数,它需要一个整数和一个三元组,并返回给定位置的三元组元素(练习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”。有什么建议?
编辑,因为这不是真正的价值限制,称它这样会迷惑读者。 –