Vasiliy
типа того
Vasiliy
на идрисе я что-то подобное изобразил, а здесь не могу
Alexander
да, человеку не удается закодировать желаемое свойство на уровне системы типов
Vasiliy
и вот основной нюанс в том, что в идрисе у меня список типов в неявной переменной болтается, по которой я в конце могу паттерн-матчинг сделать
Alexander
тут это точно делается через класс типов
Alexander
но может и так можно
Alexander
для класса типов ты можешь паттерн матчинг по типу сделать
Alexander
"паттерн матчинг" в кавычках конечно
Alexander
Vasiliy понимаешь такое решение? или сделать пример
Vasiliy
пока не понимаю, пробую
Alexander
тут плохо что смотри, есть Map a ts и Map b ts компилятор не знает что они '[] одновременно
Alexander
поэтому даже fs HNil = HNil ты просто так написать не можешь, вроде
Vasiliy
да, это я понял...
Vasiliy
даже пытался HVect заюзать, чтоб он понимал, что вектора одной длины
Vasiliy
да, скомпилировалось
Alexander
через классы типов?
Vasiliy
vinyl-решение
Alexander
на самом vinyl или сам написал?
Alexander
просто вот в vinyl у тебя есть этот удобный type level list по которому ты матчить можешь
Vasiliy
ну вот твоё определение скопировал, подправил, где надо
Alexander
а операции над типами идут над первым аргументом
Alexander
итого у нас меньше информации теряется из-за неинъективных функций
Alexander
я уверен что с твоим подходом это бы заработало, но это hard way
Vasiliy
отличненько, и в другом месте скомпилилось
Vasiliy
спасибо!
Alexander
Dmitry кстати на мои диалоги опасно смотреть со стороны, т.к. я стараюсь не решать XY проблемы правильно, т.к. мне часто интересно сделать то, о чем спрашивает человек, так что я обычно упоминают решение и стараюсь решить то что просят
Dmitry
норм, мне тож нравятся головоломки
Alexander
выходит достаточно интересно иногда, а мне полезный опыт, пригождается иногда чтобы сразу откидывать направления в реальных проектах
Alexander
или не откидывать
Alexander
но если читать диалог со стороны то может выглядеть как борьба с ветряными мельницами
Dmitry
вообще да, тот фрагмент кода выглядел совсем нетривиально
Dmitry
увы, но такого рожна полно и в нормальных либах...
Dmitry
а исходники Yesod.. мне никогда не забыть этот лавкрафтианский ужос...
Alexander
по сравнению с вычислениями на типах в idris в haskell type families выглядит печально
Alexander
yesod это достаточно интересный экземпляр кода
Alexander
Снойман вообще интересный человек совсем необычный haskell-лист
Dmitry
или тот же servant — весьма, весьма своеобразный код
Alexander
у него очень "инженерные" решения, делаем быстро чтобы покрывало главный кейс и как-то работало
Vasiliy
сервант - это воще жесть
Alexander
при этом у него (не знаю как сейчас) но раньше очень страдало образование
Vasiliy
я не знаю, как люди пишут что-то без него
Alexander
conduit - экземпляр того что бывает если пытаться не читать статьи и решения и переизобретать
Dmitry
😃
Alexander
так вот есод это очень огромный овериженеренный кусок кода написанный в своём совсем стиле
Alexander
т.к. в нём писать неудобно то ещё и с кучей генерации кода
Vasiliy
Alexander
на TH который сильно рушит бонусы от систем типов
Vasiliy
потом полез читать про pipes, там габриэль расписал всякие категории, законы итд, всё стало как-то просто и понятно
Alexander
ты посмотри на первые версии
Alexander
там где все на IORef
Alexander
там реально он прошёл по всей истории streaming библиотек
Alexander
удивительнее всего, что самой популярной библиотекой для iteratee были enumeratee Сноймана
Alexander
хотя если бы он действительно прочитал и понял статьи, то минимум бы понимал то, что понял написал conduit-0.4 или 0.5
Alexander
у него там внутренний дизайн каждую версию менялся
Alexander
наверное на conduit-1.1 он догнал прогресс
Alexander
опять же удивительно но эта либа была и есть популярнее pipes и до этого
Alexander
вот yesod это продукт из той же серии
Alexander
большой непотопляемый источник хтонического ужаса
Зигохистоморфный
есть кондуиты есть пайпы) вот чот я больше Гонзалезу доверяю
Vasiliy
ну, популярность, наверное, засчёт огромного количества постов в блогах и всякого такого
Alexander
too big too sink как выразились fp комплитовцы когда обсуджали всякую фигню после zurihac
Alexander
да вот хз
Alexander
в общем он делает очень много и очень шумно
Alexander
и оно работает
Alexander
в большинстве случаев
Alexander
а те, кто попадают в меньшинство обычно достаточно умные чтобы справиться сами
Alexander
у меня он ассоциируется с индустриальными языками программирования
Зигохистоморфный
https://twitter.com/TheWizardTower/status/910399586950189056
Alexander
но кому как
Alexander
есть люди которые дракон хотят
Alexander
везде
Alexander
а вот это бесит:
• Couldn't match type ‘StM m ()’ with ‘()’
Expected type: IO (StM m ())
Actual type: IO ()
Alexander
хотя с другой стороны когда не это то:
Also: java.lang.NullPointerException
at org.csanchez.jenkins.plugins.kubernetes.pipeline.ContainerExecDecorator.close(ContainerExecDecorator.java:275)
at org.csanchez.jenkins.plugins.kubernetes.pipeline.Resources.closeQuietly(Resources.java:33)
причем второе в рантайме готового проекта..
Cheese
Alexander
ты в курсе такого класса проблем?
Alexander
если у тебя есть какая-то ошибка любая, то компилятор не может вывести m
Alexander
как следствие он не может ресолвить StM m ()
Cheese
дык функция StM в одну сторону определена
Alexander
но вместо того, чтобы написать ошибку внутри, он пишет эту
Alexander
т.е. ошибка совершенно в другом месте