Alexander
Alexander
хитрый инстанс Foldable для (,)?
Alexander
хотя да, это логично, в паре все по правому элементу делается
Maxim
так же, как и length (1,2) == 1
Alexander
я скорее удивлен что он есть
Alexander
не хитрый, а единственно возвможный
Maxim
некоторые кастомные прелюды этот инстанс выкидывают :)
Alexander
все что может быть написано - должно быть написано
Alexander
инстанс выкинуть невозможно
Alexander
никак вообще
Maxim
ну какая разница как именно, но эффект в этом
Alexander
в чем эффект?
Maxim
что инстанса нет =)
Alexander
инстанс foldable для пары всегда естт
Alexander
этого не может быть
Alexander
ну можно сделать свою пару…
Alexander
можно или свой Foldable
Maxim
> length (1,2)
<interactive>:2:1: error:
• Do not use 'Foldable' methods on tuple
Alexander
Foldable даже проще
Maxim
я понятия не имею как это работает конечно
Alexander
:i Foldable
Maxim
да инстанс на месте
Maxim
instance Foldable ((,) a) -- Defined in ‘Data.Foldable’
Maxim
но воспользоваться им не дадут
Maxim
кстати, как такие кастомные еррор мессаджы делаются?
Alexander
если я не ошибаюсь при большом желании можно перезаписать любой метод
Alexander
ну и переписали метод из инстанса на error небось
Vadim
ребят
Vadim
а кто Bartosz Milewski переводит?
Vadim
на ютубе уроки его по теркату
кана
есть польностью переведенная его "книга"
Vadim
кана
https://henrychern.wordpress.com/2017/07/17/httpsbartoszmilewski-com20141028category-theory-for-programmers-the-preface/
Vadim
спасибо
Alexander
Alexander
у тебя ж Universum под рукой а Container.Class
Alexander
там примеры
Maxim
посмотрел, прикольно
Alexander
как это?
Alexander
код правильный, но он делает не то, что ты хочешь от него
Alexander
sort [2,4,3] тоже не возвращает [4,2,3]
Alexander
даже если я этого хочу
Alexander
least surprise наверное тут тоже не встречен, и.к. warning от компилятора как у серокелов наверное лучше
кана
sort _ = []
print $ sort [1, 2]
Alexander
чем отсутствие инстанса или наличие
кана
код абсолютно верный
Alexander
вполне возможно, спецификации нету чтобы ответить на него
Alexander
название не очень удачное
кана
ну так и название length не очень удачное для пары
Alexander
вот инстанс фолдабл для пары удовлетворяет законам?
Ilya
Alexander
у нас есть (a,b) сколько тут элементов типа b?
Alexander
неужели 2?
Alexander
а размер тупля меняется если мы first-ом меняем тип первого значения?
Alexander
ну и как обычно, все инстансы которые могут быть написаны - должны быть написаны
Alexander
есть конечно и минус при рефакторинга можно неожиданно для себя не тот код получить
Алексей
Просто туплю иногда воспринимают как data Pair a = (a, a)
Ilya
Приходится выбирать, как инстансы писать сразу, а какие только с ньютайпами
Alexander
Alexander
так лучше?
Alexander
для тупля нету другого варианта
Alexander
Ilya
Alexander
а запретить туплю и использовать вместо нее Writer - это кажется не менее странным чем инстанс для тупли
Alexander
Cheese
потому что пара не похожа на что-то перечислимое
Alexander
почему?
Алексей
maximum ("blaj", 1)?
Cheese
мой здравый смысл подсказывает
Cheese
мой мозг не видит в этом смысла
Алексей
Нельзя слишком сильно полагаться на здравый смысл
Alexander
а хаскель то тут при чем?
Cheese
если в этом нет смысла, это нельзя компилировать. иначе получается яваскрипт
Alexander
Foldable это о входящих переменных тип a
Alexander
полагайся на математику и законы
Alexander
она лучше чем мозг
Cheese