Doge
Но как абстракции тоже полезны
Shub
Shub
Shub
семантика лифта понятна любому, кто дал себе за труд прочесть 5 страниц текста буквально
Prunkles
Shub
Shub
(если заменить "мост" на "хмурый", то идиома принимает очень курьезный смысл)
Shub
в общем, сократовский метод займет очень долго, я тебе дам сжато, в надежде, что ты пойдешь детали сам уточнять
Prunkles
Shub
короче, лифт впиливают затем, чтобы в коде был аппликативный функтор. прагматизм аппликативного функтора - в крохотном edsl, всякие эти <!> и <*>. прагматизм этого edsl находится под очень большим вопросом - это раз, а так же налагает требования на твои типы, если точнее - требует, чтобы твои типы были категорией, чего в твоем коде не наблюдается
Anonymous
вроде как давно уже понял что такое монада, но давайте еще разок:
1. что такое монада?
2. что такое моноид?
3. что такое функтор?
4. что такое апликативный функтор?
надеюсь завтра проснусь и увижу тут ответы.
Shub
ну как. технически они категория, но не потому, что ты их такими спроектировал, а чисто случайно. невозможно создать тип, не являющийся категорией
Shub
Диёр
Vasily
Потереть вопрос, шоле
Vasiliy
Кажется у Jowney опять приступ
Vasily
Таблетки не принял
Mikhαil
Shub
@Prunkles в общем, перед тем, как каргокультить эти конструкции, доберись сначала до проблемы. пусть проблема сначала манифестирует себя в твоем коде, а уж потом мы будем дискутировать, стоит ли мутить функтор для нее или может задизайнить вокруг проблемы? по крайней мере, у тебя будет сильный аргумент
Shub
признаки проблемы - это например вложенные матчи по Choice\Option, развесистая валидация кейсов DU и т.п.
то есть что-то на что ты смотришь и думаешь - "неее, должен быть способ получше"
Prunkles
Shub
ну ты показывай код с проблемой, а не то, как ты скопировал подход с какого-то гайдлайна
Shub
время щас такое - никому верить нельзя, особенно в интернете
Shub
могут лишить невинности удаленно
Prunkles
Doge
Doge
Т.к. если про теоркат, то функтор там все же ощутимо отличается.
У нас везде в языках эндофункторы в категории типов данного языка, если уж корректно говорить
Anonymous
Anonymous
Doge
Anonymous
Mikhαil
Anonymous
Anonymous
Anonymous
Anonymous
Doge
Doge
Так этих проблем нет
Anonymous
Так этих проблем нет
это уже за гранью моего понимания. Но, например, любой моноид даст тебе полноправную категорию. И без проблем в рамках того же Хасклея ты построишь функтор, который не эндофунктор, а именно фуктор.
Anonymous
Просто это конструирование ради конструирования.
Anonymous
Отличный абстрактный опыт, здорово прочищает мозги, но на пратике нахуй не нужен.
Doge
Shub
Так этих проблем нет
пардон, я тут отвлекся.
в моей книжке ты числишься как человек с понятиями и с практикой, поправь меня (выше) плз, если думаешь, что я не ухватил суть
Anonymous
Находишь в Хаскле любой instance Monoid и автоматически получаешь специфическую категорию.
Doge
Anonymous
Оттуда можно в _Hask_, предполагая, что _Hask_ существует, коненчо.
Anonymous
вот тебе и обычный функтор.
Doge
Anonymous
Anonymous
не, я чот уже не понимаю че это такое и как это на теоркат ложится.
Shub
Anonymous
Shub
@DogeShibu https://t.me/fsharp_chat/148352 -- отсюда можно отследить начало, а потом сюда форварднули
Shub
Anonymous
Shub
хз по каким соображениям, ну помимо указаний в элмиш бук
Shub
и часто этот мир дан нам в таких ощущениях, что теоркат не может его адекватно смоделировать. что поделать, подавляющее число задач крайне тривиальные
Anonymous
я в курсе. я просто отмечаю, что мы пишем код для решения объективно существующей проблемы в реальном мире, и в духе ддд в коде не должно быть ничего, не имеющего отражения в реальности. т.е. мы моделируем реальный мир, а не наоборот
я ваще не понимаю че он там накодил и че хотел получить, но это парень явно просто тренируется. пусть тренируется, когда-нибудь, я надеюсь, это трансформируется в более крутой скилл. пока что, конечно, еще выглядит неумело и нафиг не нужно. с тобой полностью согласне.
Anonymous
но! он хотя бы что-то делает на пути, это уже радует.
Doge
Shub
Prunkles
Vasily
Аж собакен сагрился
Doge
Т.е. в хаскеле реализация тайпклассов даёт кучу функций за бесплатно.
Чего хочется получить тут?
Prunkles
А, не так прочитал
Shub
Doge
(но при этом важно, чтобы выполнялись соответствующие законы, т.к. на них опираются эти функции)
Anonymous
Prunkles
Вообще, изначально задача была в том, чтобы сделать тривиальным map, который каждый прекрасно понимает и без какого-либо погружения в тк. Но потом я вспомнил, мол, мап можно выразить через байнд и пьюр, а байнд мне тоже может пригодится. Так почему бы не сделать так?
Prunkles
И таким вот образом всё и получилось
Anonymous
А, не так прочитал
Не знаю уместно это или нет, но я на всякий случай тебе проясню: дело далеко не в том, чтобы у тебя был bind и return и даже того факта, что они удовлятворяют особой магической сигнатуре тоже недостаточно. У них еще должна быть "правильная" семантика, которую математики в лучших своих традициях определяют как набор инвариантов - логических утверждений, которые истины в любом "состоянии" системы. Проверить выполнение этих требований погромистом чаще, реже программистом компилятор не может, поскольку это NP-сложная задача. Как следствие, мало найти что-то, что выражается как return и bind, надо еще чтобы они в этом конкретном случае удовлетворяли этим непреложным законам.
Shub
Вообще, изначально задача была в том, чтобы сделать тривиальным map, который каждый прекрасно понимает и без какого-либо погружения в тк. Но потом я вспомнил, мол, мап можно выразить через байнд и пьюр, а байнд мне тоже может пригодится. Так почему бы не сделать так?
на данном этапе это так себе идея. если ты разовьешь свой код до того момента, когда оно тебе потребуется, то ты это легко заимплементишь. дело в том, что код читают не так, как ты его писал, а сверху вниз. поэтому многие куски будут дико загадочными, типа, зачем это все нужно?
Anonymous
Это касается так же и абстракций попроще: например, моноида.