Alexander
на zurihac Никлас эту страшную историю расскаывал
A64m
а с плагином для рекордов кто-нибудь экспериментировал уже?
Denis
lens - лучший плагин для рекордов
A64m
у lens же СООБЩЕНИЯ ОБ ОШИБКАХ плохие, поставьте звездочку Гендри
Denis
да кто на них смотрит
Denis
учишься есть кактус и игнорируешь
Алексей
Строчку пишут? Уже довольно
A64m
хотя-бы из жалости поставьте
Vladislav
описываешь квадратичный рост тут, но может он и был квадратичный?
Это алгоритм поиска квадратичный, то есть мы получаем квадратичное кол-во coercion-ов. А размер каждого coercion-а тоже растет с кол-вом полей, то есть мы получаем coercionSize^coercionAmount, где coercionSize растет тоже квадратично, в итоге (n^2)^(n^2) или вроде того
Vladislav
Наверное
Vladislav
В общем там точно экспоненциальный бардак какой-то был
Vladislav
Жаль не зарепортили пока свежо в памяти было
Denis
я не уверен что ты тут имеешь в виду под coercionSIze
Denis
то что транзитивно через пару инстансов скоэрситься надо?
Vladislav
синтаксический размер, coercion имеет тип слева и тип справа, эти типы получались очень большие
A64m
в обсуждаемых суперрекордах же вроде не квадратичная сортировка и поиск были
Denis
да, они и есть
Denis
очень похоже на описываемое
Denis
там при конструировании тайплевел merge sort вроде
A64m
ну вот, т.е. тут нормальная асимптотика именно тайплевел кода слабо помогла
A64m
ну может и сильно, без этого вообще бы больше 6 элементов в рекорде не тянула или еще что
Denis
да не, до этого так же было
Denis
я просто автору про эту фигню еще полгода назад рассказал, он на мердж-сорт переписал, но не помогло
Vladislav
это проблема в том, как GHC специализирует, у нас получалась нормальная производительность компиляции с -fno-specialize
Vladislav
Но ес-сно без специализации жизнь грустна
Denis
c -O0 жизни нет
Vladislav
самое главное что получался еще code bloat никому не нужный, потому что GHC специализировал эти инстансы
Vladislav
так что не факт, что в рантайме лучше получалось
Alexander
я для всяких тайпклассов хотел бы специализацию вконце
A64m
надо посмотреть на каких рекордах generic-lens будет тормозить
Alexander
т.е. например у нас в коде есть всякие MonadBlah
Alexander
и куча методов хотящих MonadBlah
Alexander
а их в коде всего 3-шт, но опредеяющихся совсем вконце
Alexander
было бы круто для таких методов делать late specialization
Denis
там вообще куча проходов и так
Alexander
ну вот не делать специализаций вообще
Alexander
сначала
Alexander
чтобы .hi в каждом модуле не раздувало
Vladislav
Я не уверен что дело именно в .hi
Vladislav
GHC в памяти тоже все эти преобразования делает
Vladislav
пусть он их дампать не будет — проблема останется
Denis
дело не в .hi скорее всего
Denis
49272 S.02-levels-added
5976 S.03-float-out
42720 S.04-simplifier
41784 S.05-simplifier
Denis
вот эти шаги в основном блоатятся
Denis
в симплифаере
Denis
при этом там 13 проходов
A64m
но плагин-то по идее может же это избежать?
parket
forall x. P(x) => exists x. P(x)
forall x. P(x) <=> not exists x. not P(x)
Верно?
Vladislav
Не
parket
Вот не пойму, чего нет.
Если для всех х P(x) - true, то логично, что существует такой x, что P(x) - true?
Евгений
Второе не верно, потому что у нас интуиционизм
Vladislav
> Если для всех х P(x) - true, то логично, что существует такой x, что P(x) - true?
Не логично
Евгений
Первое нужно думать. Дело в том, что в интуиционизме следствие это не наличие преобразования
Vladislav
Допустим для всех x из пустого множества P(x)=true
Vladislav
это не значит, что существует такой x, для которого P(x)=true
parket
Хорошо. Если задано непустое множество?
Vladislav
forall (x :: Void)
parket
Я не про Хаскел, а в общем.
parket
Пока что
Евгений
Зависимые типы какие-то
Евгений
Если у тебя есть классическая теория предикатов первого порядка, то в ней оба утверждения верны
Евгений
Если логика интуиционистская, то первое верно, а второе не доказуемо
parket
Как с вами сложно. 😁
Vladislav
Каким образом первое верно? Если forall x. P(x), то это вообще не значит существование хоть одного x
Vladislav
forall x. P(x) это функция, exists x. P(x) это тьюпл
Vladislav
x может принадлежать к ненаселённому кайнду
Евгений
Vladislav
правильно
Vladislav
а exists x. P(x) в интуиционизме означает, что P(x) выводимо для какого-то конкретного x и по пруфрелевантности ты должен мочь предоставить этот x
Vladislav
если у тебя есть forall x. P(x), это не значит, что ты можешь взять и предоставить некий x
Vladislav
а потому вывести exists
Евгений
Vladislav
ну напиши функцию из пи в сигму в агде
Евгений
Эм????
Vladislav
откуда ты этот терм возьмешь?
Евгений
Пи и сигма предикативные
Евгений
А forall импредикативный
Vladislav
что мне дает это утверждение?