Aleksei (astynax)
lpcstrzWindowTitle и прочие hwndpnWindowParamName
Слава
lpcstrzWindowTitle и прочие hwndpnWindowParamName
Это как раз про вышеупомянутый Си
Aleksei (astynax)
тоже практики писали
Alexander
Конечно
мне кажется весьма редкий кейс когда это возможно
Alexander
я ничего кроме сужение констреинта на уровне типов придумать не могу
Alexander
ну перестановка аргументов местами очевидно в любом случае делается без правки кишок
Alexander
тоже практики писали
это разве не особенности полиморфизма в C?
A64m
> по аналогии с называнием f functor надо называть a - funcab где аналогия то?
ну инстанс функтора это функция, которую некий демон-передавальщик-функций передает в функцию у которой в сигнатуре есть Functor f и которую мы можем там применить к f. Func a b - это функция, которую мы передаем в функцию у которой в сигнатуре есть Func a b и которую мы можем там применить к a вроде с аналогией все в порядке, нет?
Aleksei (astynax)
Когда куча вложенных вызовов и у чего-то в глубине констреинты поменялись и всплывают по всему стеку
A64m
программист его написал
Alexander
Когда куча вложенных вызовов и у чего-то в глубине констреинты поменялись и всплывают по всему стеку
только констреинты по всему стэку должны были быть самодостаточными
Aleksei (astynax)
Везде иметь всегда полный набор констреинтов?
Aleksei (astynax)
Нет уж
Aleksei (astynax)
Гранулярность - наше всё
Alexander
программист его написал
в любом случае, когда я вижу "инстанс функтора это функция" после прямого вопроса "или ты про то что функтор это преобразование а не его результат?" мне кажется что мой собеседник занимается демагогией
A64m
вот, кстати, вопрос. есть у нас класс Foo a b что нам надо называть foo? а? или b?
Alexander
ничего не могу с собой поделать
A64m
в любом случае, когда я вижу "инстанс функтора это функция" после прямого вопроса "или ты про то что функтор это преобразование а не его результат?" мне кажется что мой собеседник занимается демагогией
инстанс функтора является функцией с гораздо меньшей наятжкой, чем f. инстанс функтора можно даже скастить к функции и наоборот (опасным способом) мы не можем это делать безопасно потому что это помешает демону-передавальщику-функций хорошо работать
A64m
foo
так надо a назвать foo или b назвать foo? который из них, по вашему foo?
Aleksei (astynax)
> только констреинты по всему стэку должны были быть самодостаточными что это значает? Что констреинты должны быть минимальными? Или максимальными, чтобы потом не менять никогда?
Alexander
так надо a назвать foo или b назвать foo? который из них, по вашему foo?
а, неправильно прочитал и отетил про тип Foo a b вместо класса. Правильный ответ довольно простой: в этой ситуации простой способ назвать переменную уже не работает и надо обращаться к свойствам класса
A64m
он не работает потому что он неправильный
Alexander
не, понятно что какой то магии нет и сигнатуры идеально продумать сразу невозможно
Alexander
я скорее о том что если эта задача занимает хотя бы 1% времени то что то идет не так
Aleksei (astynax)
Мы постоянно жонглируем mtl-like констреинтами и прочими ридерами. Вот прямо каждый день по десять раз. Потому что практика. Накакого "заранее продумать" вообще - требования меняются быстрее, чем успеваешь имплементить.
Alexander
он не работает потому что он неправильный
а неправильный потому что не работает?
A64m
и поэтому в том числе
Alexander
и поэтому в том числе
возвращаясь к вопросу демагогии не могу не заметить, что это логика на сепульках какая то
A64m
если речь о том, что вы тут где-то увидали замкнутый круг то тут его нет, мы не доказываем "не работает" из "неправильно", то что не работает мы установили из опыта выше
A64m
мы разве что могли обоснованно предположить, что неправильное работатать не будет, ну так и вышло
Евгений
а, неправильно прочитал и отетил про тип Foo a b вместо класса. Правильный ответ довольно простой: в этой ситуации простой способ назвать переменную уже не работает и надо обращаться к свойствам класса
Проблема в том, что имя класса это название свойства. Странно называть объект, обладающий неким свойством, также как само это свойство
Cheese
нет, не странно
Ю ли я? 🤔
Угу. Странно называть мороженое мороженым, а больного больным.
Евгений
Это пахнет хамским панибратским отношений. Типа, "эй, четырёхглазый"
Cheese
Это пахнет хамским панибратским отношений. Типа, "эй, четырёхглазый"
"четырёхглазый" — это официальное название свойства?
Aliester
не брат ты мне, эндофунктор монадный
Cheese
"эй, лысый" — более правильная аналогия
Aliester
хаскелист это свойство?
Ю ли я? 🤔
Ну божечки, ломали же тут уже копья на эту тему.
Ю ли я? 🤔
Aliester
mental condition
Евгений
хаскелист это свойство?
Это объект, обладающий определённым свойством
Евгений
Ну божечки, ломали же тут уже копья на эту тему.
Надо переодически подкармливать клапауция, а то он одичает и убежит
Vladimir
Объект, написавший больше 10К строк на хаскиле?
Ю ли я? 🤔
как IO может не быть монадой? чушь какая-то. мы же говорим «числа являются группой по сложению»
Ю ли я? 🤔
Поэтому я совершенно не понимаю, как можно сказать сначала "IO - не монада", а потом дополнить это "IO - экземпляр Monad"
Ю ли я? 🤔
ну окей, я утрировал конечно, просто хотел сказать что когда пытаешься объяснить что-то человеку малознакомому с хаскелем и всей этой вашей функциональщиной, нужно строго отделять свойства той же IO от того что она является монадой (реализует Monad, как угодно)
Ю ли я? 🤔
Масло - оно не масляное, а вот если помазать его маслом - тогда да, оно будет масляное
Ю ли я? 🤔
IO не монада, а вот IO и еще две (минимум) операции с кое-какими свойствами - да, монада
Ю ли я? 🤔
если представить что монада это прилагательное, то все внезапно становится на свои места
Ю ли я? 🤔
"IO - это как бы монада, но вообще-то она не монада, а экземпляр Monad, хотя, строго говоря, она вообще не обязана быть монадой" - вот представьте, что новичок такое прочтёт... 😂
Ю ли я? 🤔
(надергано из контекста)
A64m
нет, не странно
нестранно для оопешника, ведь в ооп всюду отношения подтипирования, для человека не отравленного всем этим это странно. Ни мама, ни рама не являются мытьем
A64m
Поэтому я совершенно не понимаю, как можно сказать сначала "IO - не монада", а потом дополнить это "IO - экземпляр Monad"
чего тут не понимать? монадой является не тип IO, а тройка из конструктора типа IO и еще пары функций
A64m
ну т.е. и мама и рама на самом деле это мытье?
Aliester
мытье это стрелка
A64m
о чем и речь
Cheese
речь о том, что вы непонятные примеры приводите в поддержку вашего непонятного тезиса
A64m
мама может мыть раму, но отношения подтипирования между мытьем и мамой, мытьем и рамой нету
Cheese
как это мешает мороженому быть мороженым?
A64m
мороженому никто не мешает быть мороженым
Cheese
в естественном языке мы говорим "это мороженое" и в значении "принадлежит", и в значении "является", выбирая значение по контексту
Cheese
точнее, даже "является" в значении "принадлежит"
Евгений
как это мешает мороженому быть мороженым?
Это же игра слов, мороженное как прилагательное и как существительное это разные вещи
Cheese
конкретный багет хлеба является багетом, даже не являясь понятием "багет"
Евгений
При чём такая игра, на уровне Протогора
A64m
но возможность есть мороженое не является мороженым
Ю ли я? 🤔
чего тут не понимать? монадой является не тип IO, а тройка из конструктора типа IO и еще пары функций
С этим к Евгению, он-то утверждает, что монада - это свойство, а поэтому являться монадой ничего не может