Charity (язык программирования)
Перейти к навигации
Перейти к поиску
Charity — чистый тотальный функциональный язык программирования, основанный на дистрибутивных категориях с арифметикой (т.е., примитивной рекурсией). В его основе алгебраическая пара:
- начальные типы: пары из функтора и суммы конструкторов, а также свертки-fold;
- двойственные им конечные типы: кофунктор, деструкторы + развертка-unfold.
Частным случаем un/fold являются case/record и map.
Конечные типы образуют так называемые коданные, через которые выражаются многие интересные структуры: бесконечные списки, состояния и объекты. Кроме того, именно коиндуктивный тип имеют функции: их first-class статус достигается протаскиванием параметра через деструкторы.