Предлагаю упростить до
.
Это запросто, но обычно почему-то пропозиционную константу для противоречия не включают.
-- Сб апр 02, 2016 22:00:05 --Несколько комментариев:
1.
и конкретно в языке, и, насколько я понимаю, в теории типов как таковой, но в последнем не уверен
Не во всех теориях типов оно есть. В HoTT, например, тип
не содержит ничего, т. е., если теория непротиворечива (не помню, известно ли это сейчас), не выводимо ни одно из
для любого терма
, так что
там нет.
2. Типичными значениями, равными
, являются функции, генерирующие исключение, содержащие бесконечный цикл или не определённые на нужном наборе аргументов.
3. Пример
_Ivana с «неправильным» инстансом работает только по двум причинам:
• почему-то в документации к классу
Eq на его методы не наложены ограничения, эквивалентные хоть какому-то ослаблению аксиом равенства (я даже не увидел условия
a == b = not (a /= b) для случаев, когда
a == b и
a /= b оба определены);
• если бы они и были наложены, их нельзя выразить на самом хаскеле. Их записывают в документации и надеются на разумность писателей инстансов.
То есть, по-хорошему, он не работает.