Каким будет простейший аналог функции перечисления Python в OCaml?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Каким будет простейший аналог функции перечисления Python в OCaml?

Сообщение Anonymous »

В Python перечисление работает следующим образом:

Код: Выделить всё

a_list = ['a', 'b', 'c']

for i, x in enumerate(a_list):
print(i, x)
Вывод будет:

Код: Выделить всё

0 a
1 b
2 c
Таким образом, enumerate фактически возвращает генератор (в значительной степени ленивую последовательность) пар формы (i, x), где i находится в диапазоне 0, 1, 2, ... и x являются элементами списка по порядку.
На данный момент я придумал такое определение списков, которое создает не «генератор», а также список пар:

Код: Выделить всё

let enumerate (a_list: 'a list): (int * 'a) list =
let rec _enumerar (a_list: 'a list) (accum: (int * 'a) list) (i: int): (int * 'a) list =
match a_list with
| [] -> accum
| x::xs -> _enumerar  xs ((i, x)::accum) (i+1)
in
_enumerar a_list [] 0 |> List.rev
Пример использования:

Код: Выделить всё

# enumerate ['a'; 'b'; 'c'];;
- : (int * char) list = [(0, 'a'); (1, 'b'); (2, 'c')]
Есть идеи, реализована ли эта функция с другим именем где-нибудь в стандартной библиотеке или в Base?
А как насчет ленивой версии с использованием Sequence или стрим?

Подробнее здесь: https://stackoverflow.com/questions/726 ... e-function
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как выполнить код OCAML из Scala/Java?
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Функция OCAML MOD возвращает различный результат по сравнению с %
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Python Enum Class - используйте аргумент имени перечисления, чтобы выбрать значение перечисления в функции
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Python Enum Class - используйте аргумент имени перечисления, чтобы выбрать значение перечисления в функции
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Простейший пример async/await, возможный в Python
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»