整数とトリプレットを取り、指定された位置でトリプレットの要素を返す関数を作成しようとしています (ヒッキーの本の演習 5.3)。トリプレットには、さまざまなタイプの要素を含めることができる必要があります。
それぞれがトリプルの特定の要素を返す 3 つの小さな関数を記述し、それに応じて大きな関数がそれらの 1 つを返すようにすると、うまくいくと思いましたが、うまくいきません。
この「イータ拡張」の概念をいじってみましたが、わかりませんでした。
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」と書くだけです。何かアドバイス?