我正在尝试编写一个函数,它接受一个整数和一个三元组,并在给定位置返回三元组的一个元素(Hickey 书中的练习 5.3)。Triplet 应该能够包含不同类型的元素。
我想,如果我写 3 个小函数,每个返回三元组的一个特定元素,并让我的大函数相应地返回其中一个,那么它会成功,但它不起作用。
我试图摆弄这个“eta-expansion”概念,但我没有得到它。
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”。有什么建议吗?