Я предполагаю, что вы не хотите, чтобы список был изменчивым.Если вы это сделали, то можете просто внести в список индекс и обновить значение, например, mylist.[index] <- newValue
.
Я скажу прямо сейчас, что любая операция в списке, которая использует любой другой вид доступа, кроме типичного стиля "голова + хвост -> рекурс на хвосте", является сильным признаком того, что список не является правильнымструктура данных для вашей работы.См., Например, ответ Джульетты здесь. Обычно, если вы хотите работать с линейной структурой данных по индексу, лучше всего использовать массив.
Самый простой способ, который я могу придуматьэто, если вы все еще хотите сделать это со списком, было бы что-то вроде следующего:
let newList = oldList.[..index - 1] @ (newValue :: oldList.[index + 1..])
(возможно, индексы немного смещены)
Вероятно, это будет очень плохопроизводительность, однако.Я думаю, что было бы разумно сказать, что многие F # -меры будут вызывать любое использование @
или List, нарезающих запах кода.В качестве очень редкой операции для небольших списков это может быть хорошо, но если она будет использоваться часто или в больших списках, то было бы неплохо подумать, действительно ли список является подходящей структурой данных сбора для вашей задачи.