Aleksei
-)
Григорий
лул
Aleksei
а давайте попробуем тему закончить
Aleksei
а не просто попиздеть
Aliester
Суть такова
Aleksei
пардон за мой французский
A64m
TH-код не должен выглядеть эстетично, он должен выглядеть "немного не очень" - чтобы не хотелось его использовать без необходимости :)
нет, не должен. это тх должен быть нормальной фичей чтоб не нужно было бороться с его использованием
Aliester
Программы можно писать хоть на цепях Маркова
Aleksei
можно
Aleksei
но маленько некомфортно писать сколько нибудь сложную систему
Aliester
Вопрос в соответствии доменной логики философии и понятиям используемого языка и тулинге
Aleksei
вопрос в возможности адаптации языка к доменной логике
Aleksei
я, как разработчик, хочу в конечно итоге получить настраиваемый интрумент
Aleksei
который при минимальном усилии бы мог адаптироваться под похожии модели
Aleksei
а я получать бабло
Aleksei
-)))
Aleksei
и заниматься опенсорцом
Aleksei
потому что мне прикольно
Aleksei
just for fun
A64m
Благодарю!
не понял только какое обобщение типов планируется делать. можно какой-то псевдокод того, что хотелось бы писать но нельзя?
Aleksei
Плодить множество типов вообще ни к чему. Займитесь все же теорией групп. Может понятнее станет.
Aleksei
Хотя бы тезисно
Антон
Плодить множество типов вообще ни к чему. Займитесь все же теорией групп. Может понятнее станет.
Если ты про Int | String, то это как раз не очень хорошая вещь. Главным образом потому, что: 1)тег всё равно надо где-то хранить; 2) матчить по этой фигне проблематично.
Дмитрий
Да собственно, то что хотелось бы писать TH уже пишу, просто эстетически мне это не нравится :( а псевдокод (рабочий!!) type1OfSignals = toList $ do "sig1" +: [["NodeId"]] "sig2" +: [] "req3" +: [["B.ByteString"], ["Chan", "MsgToSender"]] type2OfSignals = toList $ do "sig4" +: [["IP"]] "sig5" +: [] "req6" +: [["B.ByteString"], ["Chan", "MsgToSender"]] type3OfSignals = toList $ do "sig6" +: [["IP"]] "sig7" +: [] "req8" +: [["B.ByteString"], ["Chan", "MsgToSender"]] genType "signalsForNodeType1" $ type1OfSignals <> type2OfSignals genType "signalsForNodeType2" $ type2OfSignals <> type3OfSignals genType "signalsForNodeType3" $ type3OfSignals <> type1OfSignals
A64m
так я и спросил именно псевдокод, чтоб видеть как должно быть эстетически приемлемо
A64m
ну и интересно-то не объявление в первую очередь а пример обобщенной функции которая с таким будет работать
Aleksei
+1
Aleksei
зачем?
Дмитрий
ну и интересно-то не объявление в первую очередь а пример обобщенной функции которая с таким будет работать
А что в обобщеной функции такого у неё стоит оганичени по классу (SignalsForNodeType3 a =>) например, а работает через автогенерируемые линзы.
Aleksei
Зачем вообще 3 типа сигналов?
Aleksei
для начала
Дмитрий
предпологается, что тип в одной строке не появляется дважды... поэтому имя линзы по типу определяется однозначно... пока.
Aleksei
предположения должны быть записаны
Дмитрий
Зачем вообще 3 типа сигналов?
Чтобы каждый получал, только то, что ему нужно.
Aleksei
ну так "сливай" то что не матчится
Дмитрий
Aleksei
в этом и смысл фунцкционального программирования
Aleksei
как в школе
Aleksei
дано
Aleksei
решение
Aleksei
результат
Aleksei
если не все данные смог описать то фигово
Антон
И оценки по пятибалльной системе, ага
Дмитрий
Оно матчится, но смысл матчить, если можно гарантирровать, что тебе просто не смогут послать лишнего?
Aleksei
чем это гарантировано?
Aleksei
ты программируешь функцию
Дмитрий
Тем, что канал типизирован.
Aleksei
она должна всегда одно на входе и одно на выходе давать
Aleksei
без вариантов
Aleksei
если нужны типы
Aleksei
то ты должен типизировать вход
Aleksei
нужны гарантии
Aleksei
вычислений
Дмитрий
Так я и типизирую вход, так, чтобы в него могли запихнуть ровно то, что умеют обрабатывать на выходе.
A64m
Оно матчится, но смысл матчить, если можно гарантирровать, что тебе просто не смогут послать лишнего?
я все рано не понял, что именно нужно, это не класси-призмы случайно?
Дмитрий
Нет... призмы там пока не применяются. Ладно... в целом пока всё хорошо. Эстетику оставим в стороне, тем более как выглядит идеал вопрос сложный и не до конца ясный...
A64m
но это же АТД с нескольими конструкторами которые объединяются в другие?
Aleksei
блин, опять какое-то абстракционирование идет
Aleksei
не знаю как по русски
Дмитрий
DoList - это...
Aleksei
УЖАС это
Дмитрий
https://www.stackage.org/lts-10.3/package/do-list-1.0.1
Aleksei
разве прикольно понимать, то что другие не понимают
Aleksei
?
Aleksei
мы решаем по большому счеты задачи
Aleksei
которые относятся к классическим морфизмам
Aleksei
но как моей маме это обяснить?
Aleksei
так просто блин функция
A64m
https://www.stackage.org/lts-10.3/package/do-list-1.0.1
ну понятно что это такой синтаксис для списков, которые потом передаются для генерирования кода, я про то что планируется получить
Aleksei
как ей объяснить что выпечка хлеба - морфизм?
Дмитрий
но как моей маме это обяснить?
никак... протестировано на моей маме :)
Aleksei
А зачем тогда это надо если моя мама это не понимает?
Aleksei
ну всегда были вроде математики
Aleksei
а сейчас вдруг все это рядом стало
A64m
На выходе пересекающиеся множества сигналов... пока в этом месте достаточно.
ну а сигналы эти - конструкторы? Т.е. мы работаем с некоторыми множдествами конструкторов, которые могут пересекаться
Дмитрий
Ага, верно.
Дмитрий
Ладно, я спать...