Справка по функции OCaml, включающая анализ списка списков

Я пытаюсь создать OCaml функция rv , которая просматривает список списков и реорганизует элементы в другой список списков, так что первый список состоит из первого элемента каждого из исходных списков, второй список состоит из второй элемент каждого списка и т. д.

Пример:
[["a"; «б»; "c"]; ["d"; «е»; "е"]] становится [["а"; "d"]; ["б"; «е»]; ["c"; "f"]]

У меня уже есть функция gather, которая берет список списков и извлекает элементы определенного индекса из каждого списка. Таким образом, в основном, используя предыдущий пример, я мог бы сказать gather (list, 1) и получить ["b"; "е"] назад. Мне нужен способ пройти List.length раз и использовать сборку для каждого индекса элемента.

Причина, по которой это доставляет мне столько неприятностей, кроется в применяемых ограничениях (да, это для школы).Мне не разрешено использовать циклы или локальные / глобальные переменные. Мне также не разрешено использовать let в теле функции. Есть ли другой способ рекурсивно использовать gather для каждого индекса элемента? Есть ли еще одна функция, которую я должен сделать, которая будет рекурсивно использовать gather , а затем повторно использовать эту функцию в rv ? Если да, то как бы вы это сделали?

5
задан Gilles 'SO- stop being evil' 11 November 2011 в 01:57
поделиться