
Aleksey
19.06.2018
08:05:46
Когда куча вложенных вызовов и у чего-то в глубине констреинты поменялись и всплывают по всему стеку

Alexander
19.06.2018
08:07:25

A64m
19.06.2018
08:08:12
программист его написал

Google

Alexander
19.06.2018
08:08:21

Aleksey
19.06.2018
08:09:02
Везде иметь всегда полный набор констреинтов?
Нет уж
Гранулярность - наше всё

Alexander
19.06.2018
08:09:35
программист его написал
в любом случае, когда я вижу "инстанс функтора это функция" после прямого вопроса "или ты про то что функтор это преобразование а не его результат?" мне кажется что мой собеседник занимается демагогией

A64m
19.06.2018
08:09:41
вот, кстати, вопрос. есть у нас класс Foo a b
что нам надо называть foo? а? или b?

Alexander
19.06.2018
08:09:43
ничего не могу с собой поделать

A64m
19.06.2018
08:11:23

Alexander
19.06.2018
08:11:58

A64m
19.06.2018
08:12:39
foo
так надо a назвать foo или b назвать foo? который из них, по вашему foo?

Aleksey
19.06.2018
08:13:26
> только констреинты по всему стэку должны были быть самодостаточными
что это значает? Что констреинты должны быть минимальными? Или максимальными, чтобы потом не менять никогда?

Alexander
19.06.2018
08:14:05

Google

A64m
19.06.2018
08:14:36
он не работает потому что он неправильный

Alexander
19.06.2018
08:15:30
не, понятно что какой то магии нет и сигнатуры идеально продумать сразу невозможно
я скорее о том что если эта задача занимает хотя бы 1% времени то что то идет не так

Aleksey
19.06.2018
08:18:25
Мы постоянно жонглируем mtl-like констреинтами и прочими ридерами. Вот прямо каждый день по десять раз. Потому что практика. Накакого "заранее продумать" вообще - требования меняются быстрее, чем успеваешь имплементить.

Alexander
19.06.2018
08:18:45

A64m
19.06.2018
08:19:12
и поэтому в том числе

Alexander
19.06.2018
08:19:30
и поэтому в том числе
возвращаясь к вопросу демагогии не могу не заметить, что это логика на сепульках какая то

A64m
19.06.2018
08:21:45
если речь о том, что вы тут где-то увидали замкнутый круг то тут его нет, мы не доказываем "не работает" из "неправильно", то что не работает мы установили из опыта выше
мы разве что могли обоснованно предположить, что неправильное работатать не будет, ну так и вышло

Евгений
19.06.2018
09:37:24

Yuriy
19.06.2018
09:39:02
нет, не странно

Yuuri
19.06.2018
09:39:05
Угу. Странно называть мороженое мороженым, а больного больным.

Евгений
19.06.2018
09:39:08
Это пахнет хамским панибратским отношений. Типа, "эй, четырёхглазый"

Yuriy
19.06.2018
09:39:42

Alister
19.06.2018
09:39:53
не брат ты мне, эндофунктор монадный

Yuriy
19.06.2018
09:40:13
"эй, лысый" — более правильная аналогия

Alister
19.06.2018
09:40:38
хаскелист это свойство?

Yuuri
19.06.2018
09:40:39
Ну божечки, ломали же тут уже копья на эту тему.

Google

Yuriy
19.06.2018
09:40:55

Yuuri
19.06.2018
09:40:58

Евгений
19.06.2018
09:41:26

Alister
19.06.2018
09:41:36
mental condition

Евгений
19.06.2018
09:42:39

Vladimir
19.06.2018
09:45:11
Объект, написавший больше 10К строк на хаскиле?

Yuuri
19.06.2018
09:53:36
как IO может не быть монадой? чушь какая-то. мы же говорим «числа являются группой по сложению»
Поэтому я совершенно не понимаю, как можно сказать сначала "IO - не монада", а потом дополнить это "IO - экземпляр Monad"
ну окей, я утрировал конечно, просто хотел сказать что когда пытаешься объяснить что-то человеку малознакомому с хаскелем и всей этой вашей функциональщиной, нужно строго отделять свойства той же IO от того что она является монадой (реализует Monad, как угодно)
Масло - оно не масляное, а вот если помазать его маслом - тогда да, оно будет масляное
IO не монада, а вот IO и еще две (минимум) операции с кое-какими свойствами - да, монада

Yuuri
19.06.2018
09:53:36
если представить что монада это прилагательное, то все внезапно становится на свои места
"IO - это как бы монада, но вообще-то она не монада, а экземпляр Monad, хотя, строго говоря, она вообще не обязана быть монадой" - вот представьте, что новичок такое прочтёт... ?
(надергано из контекста)

A64m
19.06.2018
09:55:45
нет, не странно
нестранно для оопешника, ведь в ооп всюду отношения подтипирования, для человека не отравленного всем этим это странно. Ни мама, ни рама не являются мытьем

Yuriy
19.06.2018
09:57:16

A64m
19.06.2018
09:57:36
ну т.е. и мама и рама на самом деле это мытье?

Alister
19.06.2018
09:58:10
мытье это стрелка

Google

Yuriy
19.06.2018
09:59:40

A64m
19.06.2018
09:59:53
о чем и речь

Yuriy
19.06.2018
10:00:34
речь о том, что вы непонятные примеры приводите в поддержку вашего непонятного тезиса

A64m
19.06.2018
10:00:49
мама может мыть раму, но отношения подтипирования между мытьем и мамой, мытьем и рамой нету

Yuriy
19.06.2018
10:01:32
как это мешает мороженому быть мороженым?

A64m
19.06.2018
10:02:09
мороженому никто не мешает быть мороженым

Yuriy
19.06.2018
10:02:56
в естественном языке мы говорим "это мороженое" и в значении "принадлежит", и в значении "является", выбирая значение по контексту
точнее, даже "является" в значении "принадлежит"

Евгений
19.06.2018
10:04:15

Yuriy
19.06.2018
10:04:23
конкретный багет хлеба является багетом, даже не являясь понятием "багет"

Admin
ERROR: S client not available

A64m
19.06.2018
10:04:27

Евгений
19.06.2018
10:04:40
При чём такая игра, на уровне Протогора

Yuriy
19.06.2018
10:04:41

A64m
19.06.2018
10:04:49
но возможность есть мороженое не является мороженым

Yuuri
19.06.2018
10:04:56

Ilya
19.06.2018
10:05:08
IO -- это монада
IO -- это функтор
IO -- это конструктор типа
Петя -- человек
Петя -- хаскеллист
Петя -- спамер

Alister
19.06.2018
10:05:12
человек не является понятием человека

Yuriy
19.06.2018
10:05:15
поэтому IO является монадой, но не является Monad

Google

Евгений
19.06.2018
10:05:35

A64m
19.06.2018
10:05:48

Yuriy
19.06.2018
10:06:05
IO is a monad, but not the Monad

A64m
19.06.2018
10:06:07

Alister
19.06.2018
10:06:31
каждый хаскелист - человек, но не каждый человек хаскелист

A64m
19.06.2018
10:07:00
да нет, это тут не при чем

Ilya
19.06.2018
10:07:52
Вот так наверное

A64m
19.06.2018
10:09:03
есть "монада IO", которая не тип, одноименная конструктору типов IO, который не монада сам по себе, но часть монады вместе с парой функций
когда говорят "f тут монада" это сокращение для более корректной формулировки, это не утверждение, что f ЯВЛЯЕТСЯ монадой
есть языки (с баундед полиморфизмом) где обсуждаемая интуиция правильна, но хаскель не из этих языков

Yuriy
19.06.2018
10:16:47
давайте вместо "является" говорить "is-a" или "is-the". kak eto budet po-russki?

Ilya
19.06.2018
10:20:09
нет разницы
Есть иногда. Например "Петя — врач", всё нормально, но если скажешь "Петя — это врач", то это будет уже не по-русски, как будто даёшь определение Пети через врача.

A64m
19.06.2018
10:21:23
да какая разница, как это будет по русски, как это в хаскеле будет
вот в C# легко доказать, что T это C
C foo<T>(T t) where T : C => (C)t
теперь докажите, что в хаскеле t это C
C t => t -> C t; foo = ???

Yuriy
19.06.2018
10:22:29

Vladimir
19.06.2018
10:24:03
возможно какой-нибудь Maybe будет более чётким примером для тезиса "монада — это конструктор типов и две операции"
для Maybe можно определить не одну монаду, а штук пять разных
да и даже просто список, на нём вроде тоже не одну монаду определить можно

Yuriy
19.06.2018
10:26:55