Alexander
ты ещё скажи что Identity перечислить нельзя?
Cheese
полагайся на математику и законы
математика говорит, что максимум берётся по множеству, а не паре
Alexander
Tuple это не пара
Алексей
Там одноэлементное множество
Alexander
Tuple это контейнер
Алексей
С точки зрения фолдабля
Alexander
я не знаю зачем твой мозг даёт ложные переводы и аналогии и обманывает теб
Cheese
Tuple это контейнер
ну, так можно рассматривать, но где тогда взять пару?
Alexander
что такое пара?
Alexander
и что такое контейнер
Алексей
А яваскрипт получается, если использовать кучу эвристик противоречащих друг другу
Alexander
по мне пара это data Pair a = P a a
Alexander
и это контейнер
Cheese
контейнер — что-то содержащее что-то другое
Alexander
полиморфная переменная типа есть?
Cheese
по мне пара это data Pair a = P a a
да, только хочется разнородную
Alexander
ее и содержит
Alexander
ну это контейнер
Алексей
В стандартной библиотеке нету
Alexander
причем даже Proxy это контейнер
Алексей
То есть тупля ничего не содержит?
Alexander
хотя в Proxy полей нет
Cheese
не знаю, почему ты защищаешь свой язык, разрешающий писать плохой код
Alexander
потому что я нахожу то, что ты хочешь нелогичным
Alexander
и непоследовательным
Алексей
Поведение фолдабла в случае тупли совершенно логично, но с непривычки неинтуитивно
Cheese
ты мыслишь низко, в терминах хаскельных конкструкторов и тайпклассов, а я про понятия, которые они призваны реализовать, но реализуют плохо
кана
для тупля нету другого варианта
в смысле нет, когда есть?
кана
потому что я нахожу то, что ты хочешь нелогичным
нужно уточнить, чем ты считаешь хаскель для себя (и язык программирования в принципе) Для меня, например, не важно, чтобы все инстансы были написано, наоборот, я бы хотел, чтобы хоть и верных, но опасных инстаснов не было, чтобы я СЛУЧАЙНО не допустил ошибку, потому что для меня компилятор - средство помощи. А если они нужны - имплиситно взять их через ньютайп
кана
instance (a, b) where null _ = True fold _ = mempty
Cheese
@qnikst spam ^
kosc
Это что, спам-бот, который спамит через бота?
Ilya
instance (a, b) where null _ = True fold _ = mempty
А всё потому что у фолдабла никаких Laws толком и нету
Cheese
@icrbow spam ^^^^
Cheese
кана
А всё потому что у фолдабла никаких Laws толком и нету
не, ну те законы, что есть, этот инстанс соблюдает
A64m
некоторые кастомные прелюды этот инстанс выкидывают :)
хороший показатель, какие кастомные прелюдии можно сразу выкинуть (эти)
A64m
instance (a, b) where null _ = True fold _ = mempty
это неправильный инстанс для фолдабла, потому что он не соотвествует инстансу для траверсабла
Cheese
A64m
ну т.е. они реализуют "что-то, помеченное чем-то", и инстансы заходят в банку, и не трогают ее этикетку
Alexander
негодный инстанс, почему он работает не так как остальные?
Alexander
почему он ломает мой траверсабл?
кана
в смысле не так, что значит "так"
кана
он работает
кана
и выполняет законы
Alexander
такой инстанс можно для любого типа написать
Alexander
поведение фолдаблов всех, такое что они производят операции на всех значениях самого внешнего параметра типов
Alexander
почему инстанс для тупла должен быть особенным я не очень понимаю
Alexander
но это же логично!
а почему у List не такой?
Alexander
это же логично!
кана
а почему у List не такой?
потому что так захотели авторы инстанса
Alexander
в общем, я понимаю почему наличие инстанса для тупля может привести к проблемам при рефакторинге
кана
они просто взяли один из многих инстансов
Cheese
а почему у List не такой?
плевать, такой или не такой. плевать на семантику. законы же выполняются
кана
по своему желанию
A64m
про этот тупл надо на собеседованиях спрашивать
Alexander
я вот написал почему он такой, и и list и tuple и любой тип в эту логику укладывает
Alexander
даже дефолтный дерайвинг укладывается
Alexander
пытаться доказать что он плохой и нужен тривиальный инстанс это какая-то форма глупости
Alexander
есть ли проблемы с инстансом - есть
Alexander
лучше бы было если бы его не было - нет
Alexander
нужен другой инстанс - абсолютно нет
Cheese
пытаться доказать что он плохой и нужен тривиальный инстанс это какая-то форма глупости
не нужен тривиальный. тривиальный будет ровно такой же бесполезный, как этот
A64m
ДА С ЧЕГО ОН БЕСПОЛЕЗНЫЙ-ТО
кана
почему не было бы лучше? Возможно лучше, если бы он как-то сильно помогал А так он как минимум делает код понятнее
Aleksei (astynax)
Нынешний инстанс - полезный
кана
мой вариант был выше такой - делать использование этого инстанса ЯВНО через ньютайп
Cheese
ДА С ЧЕГО ОН БЕСПОЛЕЗНЫЙ-ТО
я с этого начал же. он разрешает писать неправильную программу
Alexander
не нужен тривиальный. тривиальный будет ровно такой же бесполезный, как этот
там у вас есть хорошая кофейня, сходи попей кофе и спокойно подумай, сейчас ты говоришь слишком много необоснованных вещей
Алексей
Ну он и реализует. Но из-за ограничений тайпклассов работает только с одним элементом
A64m
[("FOO", 1), ("BAR",2)] ПОПРОБУЙТЕ СУММУ ПОСЧИТАЙТЕ БЕЗ ЭТОГО БЕСПОЛЕЗНОГО ИНСТАНСА