Просто чтобы добавить еще одну возможность, если вы используете сборку .NET 4.0 для F # 2.0, вы можете выполнить приведение во время выполнения из кортежа F # в .NET 4.0 System.Tuple и затем использовать свойства ItemX
кортежей .NET 4.0 для доступа к нужному элементу кортежа
let x = (1, 1.2, "hello")
let y = ((box x) :?> System.Tuple<int, float, string>);;
y.Item3 //returns "hello"
Однако я бы никогда не использовал это, вместо этого выбрав извлечение совпадения с образцом. (также я читал места, где компилятор F # не всегда может представлять свои кортежи в виде кортежей .NET 4.0, поэтому может быть вероятность, что приведение завершится неудачно).
Читая ваши комментарии в некоторых других ответах, я не уверен, почему решение для сопоставления с образцом не работает для вас. Возможно, вы хотите получить доступ к элементу кортежа в определенном месте выражения? Если это так, предыдущий, безусловно, будет работать:
let str = "hello" + ((box x.[1]) :?> System.Tuple<int,string>).Item2 //though might as well use snd and fst for length 2 F# tuples
но вы можете достичь тех же целей, используя метод извлечения совпадений по шаблону (опять же, если предположить, что это даже то, что вам нужно):
let str = "hello" + (let (_,name) = x.[1] in name)