У залежно типовому програмуванні є два основні способи декомпозиції даних та виконання рекурсії:
- Залежне узгодження шаблону : визначення функції подаються у вигляді декількох пропозицій. Уніфікація гарантує, що всі пропущені випадки неможливі, а зовнішній вирішувач гарантує, що рекурсія є обґрунтованою.
- Сепаратори : Кожен індуктивний тип даних має пов'язаний з ним постійний , який діє в якості принципу індукції, а також рекурсивної функції , які розкладаються значення типу . Вони є більш багатослівними, але мають перевагу в тому, що вони є тотальними (усі випадки охоплені ) і закінчуються конструкцією. D E D
Я бачив елімінатори для поширених типів даних, наприклад, , де елімінатор в основному є математичною індукцією, або , де елімінатор - це в основному складка.Л і с т
Я читав кілька статей про залежність відповідності шаблонів, і багато хто посилається на теорії типів, в яких можна визначити типи даних, а теоретичні засоби усунення забезпечуються. Наприклад, усунення залежного шаблону узгодження описує , як ЕТТ заснований на Елімінатори, і як зіставлення з зразком може бути перетворено в усунення в присутності аксіоми . Я розумію, що після визначення типу даних теорія забезпечує елімінатор.
Те, що я не знайшов (або, принаймні, не визнав, чи бачив) - це хороший опис того, як можна отримати елімінатори, як їхні типи, так і їх семантику.
Чи може хтось вказати мені на посилання, яке описує, як можна отримати елімінатор з визначення типу даних?
fix
і match
. У мене немає довідки, але я знаю, що я прочитав щось про те, як створюється цей елімінатор. cs.stackexchange.com/questions/104/… може представляти інтерес.
T
Coq визначає принцип індукції, T_ind
який є залежним елімінатором. Це визначається з точки зору рекурсії та відповідності шаблону, але ви, в принципі, можете вважати це новою константою, що має той же тип (з однаковою семантикою).