
Pig
20.09.2017
15:38:34

Vasiliy
20.09.2017
15:38:43
я же не знаю, ts у нас '[] или что-то ещё

Alexander
20.09.2017
15:38:51
а зачем там прокся вообще?

Leonid
20.09.2017
15:39:08
Vasiliy компилятор тоже не знает

Google

Vasiliy
20.09.2017
15:39:18
без прокси он говорит Couldn't match type ‘Map M ts0’ with ‘Map M ts’
он думает, что это два разных ts

Leonid
20.09.2017
15:39:50
надо через класс с 2мя инстансами (x ': xs) и '[]

Dmitry
20.09.2017
15:40:02
Парни, вот вы тут пытаетесь уговорить компилятор сделать что-то довольно простое, судя по всему. Как получилось, что 5 минут до этого все убеждали меня, что кодяра на х-е легко читается?

Alexander
20.09.2017
15:40:10
как в vinyl сильно проще
где у нас:
data HL (f::* -> *) [xs] where
C :: f x -> HL f xs -> HL (x:xs)

Leonid
20.09.2017
15:40:42
язабан, нельзя так толсто

Vasiliy
20.09.2017
15:41:18
гм...

Alexander
20.09.2017
15:41:31
Dmitry как в clojure сообществе принято обращаться с людьми которые не поняли кусок диалога непоняли и начали троллить?

Dmitry
20.09.2017
15:41:52
ладно, проехали

Alexander
20.09.2017
15:42:00
я серьезно
почему а. простое, встречается ли такой код в рабочем проекте и как часто
или в clojure не возникает вопросов, а вот я хочу сделать такое хитрое инетересно получится ли у меня

Google

Alexander
20.09.2017
15:43:29
с макросами или что там есть нетривиальное

Dmitry
20.09.2017
15:43:54
В кложуре вопросы совсем другого плана. Они не касаются синтаксиса языка

Alexander
20.09.2017
15:44:13
тут вопросов про синтаксис не было

Dmitry
20.09.2017
15:44:13
там кстати с синтаксисом вообще порядок: его почти нет

Vasiliy
20.09.2017
15:44:15
конечно, ведь там нет синтаксиса

Dmitry
20.09.2017
15:44:37
ну здесь про систему типов, которую никак не удаётся уломать сделать то, что нужно
или я не так понял?

Vasiliy
20.09.2017
15:44:52
типа того
на идрисе я что-то подобное изобразил, а здесь не могу

Alexander
20.09.2017
15:45:14
да, человеку не удается закодировать желаемое свойство на уровне системы типов

Vasiliy
20.09.2017
15:46:21
и вот основной нюанс в том, что в идрисе у меня список типов в неявной переменной болтается, по которой я в конце могу паттерн-матчинг сделать

Alexander
20.09.2017
15:47:47
тут это точно делается через класс типов
но может и так можно
для класса типов ты можешь паттерн матчинг по типу сделать
"паттерн матчинг" в кавычках конечно
Vasiliy понимаешь такое решение? или сделать пример

Vasiliy
20.09.2017
15:49:22
пока не понимаю, пробую

Alexander
20.09.2017
15:50:11
тут плохо что смотри, есть Map a ts и Map b ts компилятор не знает что они '[] одновременно
поэтому даже fs HNil = HNil ты просто так написать не можешь, вроде

Vasiliy
20.09.2017
15:50:43
да, это я понял...

Google

Vasiliy
20.09.2017
15:51:06
даже пытался HVect заюзать, чтоб он понимал, что вектора одной длины
да, скомпилировалось

Alexander
20.09.2017
15:52:12
через классы типов?

Vasiliy
20.09.2017
15:52:24
vinyl-решение

Alexander
20.09.2017
15:52:40
на самом vinyl или сам написал?
просто вот в vinyl у тебя есть этот удобный type level list по которому ты матчить можешь

Vasiliy
20.09.2017
15:53:01
ну вот твоё определение скопировал, подправил, где надо

Alexander
20.09.2017
15:53:13
а операции над типами идут над первым аргументом
итого у нас меньше информации теряется из-за неинъективных функций
я уверен что с твоим подходом это бы заработало, но это hard way

Vasiliy
20.09.2017
15:57:38
отличненько, и в другом месте скомпилилось
спасибо!

Alexander
20.09.2017
16:00:07
Dmitry кстати на мои диалоги опасно смотреть со стороны, т.к. я стараюсь не решать XY проблемы правильно, т.к. мне часто интересно сделать то, о чем спрашивает человек, так что я обычно упоминают решение и стараюсь решить то что просят

Dmitry
20.09.2017
16:00:25
норм, мне тож нравятся головоломки

Alexander
20.09.2017
16:00:46
выходит достаточно интересно иногда, а мне полезный опыт, пригождается иногда чтобы сразу откидывать направления в реальных проектах
или не откидывать
но если читать диалог со стороны то может выглядеть как борьба с ветряными мельницами

Dmitry
20.09.2017
16:01:39
вообще да, тот фрагмент кода выглядел совсем нетривиально
увы, но такого рожна полно и в нормальных либах...
а исходники Yesod.. мне никогда не забыть этот лавкрафтианский ужос...

Google

Alexander
20.09.2017
16:03:35
по сравнению с вычислениями на типах в idris в haskell type families выглядит печально
yesod это достаточно интересный экземпляр кода
Снойман вообще интересный человек совсем необычный haskell-лист

Dmitry
20.09.2017
16:04:26
или тот же servant — весьма, весьма своеобразный код

Alexander
20.09.2017
16:04:47
у него очень "инженерные" решения, делаем быстро чтобы покрывало главный кейс и как-то работало

Vasiliy
20.09.2017
16:05:00
сервант - это воще жесть

Alexander
20.09.2017
16:05:01
при этом у него (не знаю как сейчас) но раньше очень страдало образование

Vasiliy
20.09.2017
16:05:30
я не знаю, как люди пишут что-то без него

Alexander
20.09.2017
16:05:31
conduit - экземпляр того что бывает если пытаться не читать статьи и решения и переизобретать

Dmitry
20.09.2017
16:05:50
?

Alexander
20.09.2017
16:06:11
так вот есод это очень огромный овериженеренный кусок кода написанный в своём совсем стиле
т.к. в нём писать неудобно то ещё и с кучей генерации кода

Vasiliy
20.09.2017
16:06:32

Alexander
20.09.2017
16:06:50
на TH который сильно рушит бонусы от систем типов

Vasiliy
20.09.2017
16:07:13
потом полез читать про pipes, там габриэль расписал всякие категории, законы итд, всё стало как-то просто и понятно

Alexander
20.09.2017
16:07:44
ты посмотри на первые версии
там где все на IORef
там реально он прошёл по всей истории streaming библиотек
удивительнее всего, что самой популярной библиотекой для iteratee были enumeratee Сноймана
хотя если бы он действительно прочитал и понял статьи, то минимум бы понимал то, что понял написал conduit-0.4 или 0.5

Google

Alexander
20.09.2017
16:09:19
у него там внутренний дизайн каждую версию менялся
наверное на conduit-1.1 он догнал прогресс
опять же удивительно но эта либа была и есть популярнее pipes и до этого
вот yesod это продукт из той же серии
большой непотопляемый источник хтонического ужаса

Denis
20.09.2017
16:10:59
есть кондуиты есть пайпы) вот чот я больше Гонзалезу доверяю

Vasiliy
20.09.2017
16:11:01
ну, популярность, наверное, засчёт огромного количества постов в блогах и всякого такого

Alexander
20.09.2017
16:11:04
too big too sink как выразились fp комплитовцы когда обсуджали всякую фигню после zurihac
да вот хз
в общем он делает очень много и очень шумно
и оно работает
в большинстве случаев
а те, кто попадают в меньшинство обычно достаточно умные чтобы справиться сами
у меня он ассоциируется с индустриальными языками программирования

Denis
20.09.2017
16:14:39
https://twitter.com/TheWizardTower/status/910399586950189056

Alexander
20.09.2017
16:15:20
но кому как
есть люди которые дракон хотят
везде
а вот это бесит:
• Couldn't match type ‘StM m ()’ with ‘()’
Expected type: IO (StM m ())
Actual type: IO ()
хотя с другой стороны когда не это то:
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)
причем второе в рантайме готового проекта..

Yuriy
20.09.2017
16:18:48