Repolode
janestreet

janestreet/incremental

Библиотека на OCaml для эффективного обновления вычислений при изменении входных данных, основанная на концепции самонастраивающихся вычислений.

Звёзды
1,539
Форки
76
Открытые issues
0
Последний коммит
4 дня назад

Что это?

Incremental позволяет строить сложные вычисления из входных данных и производных значений: при изменении входного значения пересчитываются только затронутые части. Библиотека основана на исследованиях самонастраивающихся вычислений Умута Акара и его коллег и разрабатывается Jane Street.

Типичный сценарий использования — граф вычислений, похожий на электронную таблицу: вы задаёте значения через другие значения, а библиотека поддерживает производные результаты в актуальном состоянии. Эта же модель подходит для GUI-представлений, которым нужно эффективно обрабатывать новые данные, а также для производных данных, например отфильтрованных или инвертированных отображений, которые должны оставаться согласованными с исходными.

Библиотека написана на OCaml, а её API описан в файле интерфейса incremental_intf.ml в репозитории.

Ключевые возможности

  • 01Строит графы зависимостей, в которых при изменении входных данных пересчитываются только затронутые части.
  • 02Автоматически поддерживает согласованность производных значений с исходными.
  • 03Написана на OCaml; описание API находится в файле интерфейса.

Сценарии использования

  • Построение вычислений по принципу электронных таблиц, эффективно реагирующих на изменение данных.
  • Создание представлений в GUI-приложениях, которые обновляются по мере поступления новых данных.
  • Поддержание производных данных, например отфильтрованных или инвертированных отображений, в актуальном состоянии относительно источника.

Быстрый старт

  1. 1

    Установите библиотеку через opam

    opam install incremental
  2. 2

    Чтобы использовать библиотеку в проекте на OCaml, прочитайте подробную документацию в incremental_intf.ml

Что важно знать

  • Для использования требуются знания OCaml.

Темы

#ocaml#incremental-computation#self-adjusting-computation#functional-programming#reactive

Частые вопросы

Что такое incremental?
Библиотека на OCaml для эффективного обновления вычислений при изменении входных данных, основанная на концепции самонастраивающихся вычислений. Incremental позволяет строить сложные вычисления из входных данных и производных значений: при изменении входного значения пересчитываются только затронутые части. Библиотека основана на исследованиях самонастраивающихся вычислений Умута Акара и его коллег и разрабатывается Jane Street.
incremental можно использовать бесплатно? Какая у него лицензия?
incremental распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
incremental всё ещё поддерживается?
Активно поддерживается. Последний коммит в incremental — 3 нояб. 2026 г..
Для чего можно использовать incremental?
Построение вычислений по принципу электронных таблиц, эффективно реагирующих на изменение данных. Создание представлений в GUI-приложениях, которые обновляются по мере поступления новых данных. Поддержание производных данных, например отфильтрованных или инвертированных отображений, в актуальном состоянии относительно источника.
Как установить incremental?
Установите библиотеку через opam: opam install incremental Чтобы использовать библиотеку в проекте на OCaml, прочитайте подробную документацию в incremental_intf.ml
Где скачать incremental?
Исходный код и инструкции по установке — на GitHub: https://github.com/janestreet/incremental

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Библиотека утилит для TypeScript с функциями для массивов, объектов и других типичных задач, поддерживающими вызов с данными до или после функции.

5,5 тыс.+2 за неделю173TypeScriptMITАктивно поддерживаетсяОбновлён вчера

Lila — сервер на Scala, на котором работает lichess.org: бесплатная шахматная онлайн-платформа без рекламы с открытым исходным кодом.

19 тыс.+18 за неделю2,8 тыс.ScalaAGPL-3.0Активно поддерживаетсяОбновлён 10 часов назад