Добавить и удалить элементы списка

В примере университета объясняется, как добавлять и удалять элементы карты:

(departments composeLens at("Physics")).set(Some(physics))(uni)
(departments composeLens at("History")).set(None)(uni)

Это не работает со списками, хотя:

(lecturers composeOptional index(2)).set(Lecturer("New", "Lecturer", 50))(dep)
(lecturers composeOptional index(0)).set(None)(dep)

Добавление ничего не делает, удаление приводит к ошибке компиляции.

0 ответов

Поскольку в OP нет явного вопроса, я постараюсь ответить на несколько возможных вопросов:

  1. Почему первая пара линий работает, а вторая - нет?

Ответ дается в разделе "В чем разница между at и index? Когда я должен использовать тот или иной?" посередине страницы:

Другими словами, index может обновлять любые существующие значения, пока at может также insert а также delete.

  1. Как я могу добавлять / удалять элементы в / из списка?

Чуть ниже приведенного выше текста:

поскольку index слабее чем at, мы можем реализовать экземпляр Index по большей структуре данных, чем At. Например,List или Vector есть только экземпляр Index потому что нет возможности вставить элемент в произвольный индекс последовательности.

Так что это может быть невозможно... Однако у меня нет Монокля, чтобы проверить несколько вещей.

Другие вопросы по тегам