Пример:Merge (группы по) огромные последовательности лениво Clojure
У нас есть два временных рядов ленивых последовательностей карты, созданные чтения CSV. В две ленивых-последовательностях начинаются в разные дни:
INPUT
lazy-seq1
({:date "20110515" :val1 123}
{:date "20110516" :val1 143}
{:date "20110517" :val1 1153} ...)
lazy-seq2
({:date "20110517" :val2 151}
{:date "20110518" :val2 1330} ...)
EXPECTED OUTPUT
lazy-seq3
({:date "20110515" :vals {:val1 123}}
{:date "20110516" :vals {:val1 143}}
{:date "20110517" :vals {:val1 1153 :val2 151}}
{:date "20110518" :vals {:val1 ... :val2 1330}}
...))
Чтобы быть точным, тип: дата не строка, но Jodatime принуждены CLJ время и: дата сортируются для каждой последовательности.
Первый выбор будет использовать групповую функцию, но я думаю, что это не может создать lazy-seq. Я считаю, что группам нужна нетерпеливая оценка.
Второй вариант будет использовать функцию разбиения на разделы, но я не могу применить это к своим ВХОДАм из-за отсутствия умения закрытия.
Входной сигнал довольно большой (~ 1 ГБ на последовательность), и я хочу рассчитать много (~ 100) последовательностей сразу. Итак, мне нужна ленивая оценка, чтобы избежать ошибки Outofmemory.
Ваши входные последовательности отсортированы по дате? – leetwinski