Может быть, вы должны использовать массив вместо списка, так как массив имеет фиксированную длину:
// create an array of length = 2, initialized with zeros.
let cValues : int[] = Array.create 2 0
cValues.IsFixedSize // returns true
EDIT: Как и другие предложили, кортеж может также быть путь. Для пары (кортеж длины два) вы можете получить доступ к значениям, используя функции fst и snd. Для более длинного кортежа вы можете использовать сопоставление с образцом, как показано ниже. Если кортеж слишком длинный, чтобы сделать этот подход соответствия шаблону практичным, вам, вероятно, понадобится структура, отличная от кортежа F #. Конечно, одним из основных требований к рассмотрению является необходимость сохранения значений смешанных типов. Кортеж или запись могут хранить сочетание нескольких типов, тогда как в массиве или списке хранятся значения одного типа.
let fourTuple = (5, 10, 2, 3)
let _,_,third,_ = fourTuple
printfn "%d" third // displays "2"
Если массив или кортеж не будет отвечать вашим требованиям, то, возможно, вы должны использовать другую запись так:
type ListOfC = {c1 : int; c2 : int}
type a' = {b' : float; c' : ListOfC}
Или вы можете создать новый класс, который будет отвечать вашим требованиям, начиная с сценария ниже. Конечно, это, вероятно, не будет считаться идиоматическим стилем функционального программирования. Это больше похоже на ООП.
type ListOfTwo(firstInt : int, secondInt : int) =
member this.First = firstInt
member this.Second = secondInt
let myListOfTwo = ListOfTwo(4, 5)
myListOfTwo.First
type a = {b : float; c : ListOfTwo }
Просто потому, что разные языки используют одно и то же имя для типа, это не значит, что они одинаковы. Прямо сейчас я переводил Python в F #, и я могу заверить, что список Python не совпадает с списком F # или списком C#. Если вы пытаетесь перевести тип с одного языка на другой, сконцентрируйтесь на том, как работают функции типа, а не от имени типа. Почему бы вам не использовать кортеж? –
Вы можете проверить, когда объект создан. –
Вам нужна проверка типа времени компиляции или проверка времени выполнения? –