Майте на увазі, що екзистенційні та універсальні типи досить різні. Це конструктивна логіка, не класична логіка, а конструктивна логіка і не так пов'язані, як у класичній логіці.∀∃
∀x:A.B(x) - тип програм, які отримують об'єкт типу і повертають об'єкт типу . Тут важливо те, що тип залежить від і не є однаковим для всіх . Він може змінюватися залежно від того, що таке . Для одного вводу ми можемо вивести ціле число. Для іншого ми можемо вивести дійсне число. Для ще однієї ми можемо вивести функцію над реальними числами. Якщо не змінюються з , то ви можете використовувати в місці , яке є типом функцій з в .AB(x)B(x) xxxxB(x)xA→BAB
∨ В В В ∃ х : . В ( х ) В ( х ) х : В ( х ) х : В х : ∃ х : . B B x : A A × B∃x:A.B(x) - залежна версія (конструктивної) диз'юнкції. Ви можете думати про конструктивну диз'юнкція двох типів і , як недоладне об'єднання і .
є об'єднанням непересічних колекції типів ,
індексованого . Той факт, що фургон типу змінюється залежно від значення
робить його залежним типом. Порівняйте із випадком, коли не залежить від : . Ми беремо одну копію тієї самоїA∨BABAB∃x:A.B(x)B(x)x:AB(x)x:ABx:A∃x:A.BB для кожного . Це ізоморфно .x:AA×B
Тепер ви можете запитати, для чого нам потрібні залежні типи товарів і сум? Тому що вони надають нам більшої виразності. Тепер ми можемо повністю ігнорувати типи та мати нетипізовану теорію типів / функціональне програмування. Але це усуває переваги наявності типів в першу чергу, наприклад, ви не знаєте, чи завжди всі програми припиняються (сильна нормалізація). Див. Куб лямбда та
залежний тип . Я думаю, що хороший спосіб добре зрозуміти залежні типи - це переглянути правила введення та усунення залежних типів у теорії типів Мартіна-Лофа .
Основна суть залежних типів полягає в тому, що ми хочемо з різних причин залишатися всередині приємної введеної теорії (наприклад, уникнення помилок, автоматичного підтвердження припинення тощо). Ми не хочемо звертатися до чогось типу нетипового обчислення лямбда, де ми можемо зробити вираз, як ті, про які ви заявили, і зробити більш потужними речі. Можна сказати, що залежні типи були винайдені, щоб дозволити висловлювати більше речей, залишаючись всередині приємної теорії типів.