Size: a a a

2020 July 03

VZ

Vladislav Zavialov in Haskell
Ну да, это так.
источник

VZ

Vladislav Zavialov in Haskell
Хотя в той статье инстансы Functor написаны вручную, поэтому причин полагать, что это сделано для TH, нет.
источник

VZ

Vladislav Zavialov in Haskell
Кроме одной фразы

> although it's possible to generate Functor instances with Template Haskell
источник

АГ

Александр Гранин... in Haskell
В статье да, там неполная информация
источник

MK

Maxim Koltsov in Haskell
а как ты понимаешь гадты, если не хочешь вдаваться в "type classes, type equality, etc"?
источник

АГ

Александр Гранин... in Haskell
Maxim Koltsov
а как ты понимаешь гадты, если не хочешь вдаваться в "type classes, type equality, etc"?
Интуитивно? Когда есть разница по сигнатурам типа или когда есть какие-нибудь вставки экзистенциальных типов
источник

VZ

Vladislav Zavialov in Haskell
Кстати, не первый раз я слышу про “интуитивное” понимание GADT-ов. Для меня GADT-ы и интуитивность в одном предложении не вяжутся.
источник

VZ

Vladislav Zavialov in Haskell
Я их понял только через трансляцию в type equality и existential quantification, а existential quantification нормально осознал только когда начал думать о ней как о нерелевантной зависимой сумме
источник

АГ

Александр Гранин... in Haskell
Мое слово "интуитивное" здесь значит "неформальное". Сами gadt не интуитивные
источник

MK

Maxim Koltsov in Haskell
/me до сих пор не понимает слово "релевантный"
источник

VZ

Vladislav Zavialov in Haskell
relevant значит можно матчиться (и соответственно надо в рантайме перекидывать)
источник

VZ

Vladislav Zavialov in Haskell
irrelevant значит можно стереть из программы
источник

MK

Maxim Koltsov in Haskell
а в словосочетании "proof-relevant" какое значение?
источник

VZ

Vladislav Zavialov in Haskell
Такое же – пруфы нельзя стереть
источник

VZ

Vladislav Zavialov in Haskell
От них зависит вычислительная интерпретация кода
источник

VZ

Vladislav Zavialov in Haskell
Например, в HoTT равнество может быть изоморфизмом, а изоморфизмы не уникальны
источник

VZ

Vladislav Zavialov in Haskell
Поэтому если у меня data T = A | B, то у T ~ Bool два возможных пруфа
источник

VZ

Vladislav Zavialov in Haskell
A <-> True; B <-> False

и

A <-> False; B <-> True
источник

VZ

Vladislav Zavialov in Haskell
А в системе, где все пруфы это просто Refl, их можно выкинуть (proof irrelevance)
источник

MK

Maxim Koltsov in Haskell
пример такой системы?
источник