Зигохистоморфный
а что если plusa :: Monoid m => Rec [] m -> Rec [] m -> Rec [] m?
Vasiliy
там в документации есть какие-то функции для констрейнтов, может, их надо применить...
Vasiliy
нэ, у m кайнд [*]
Vasiliy
блин, а решение, оказывается, самое наитупейшее - просто прописать в констрейнт plusa то, что ему нужно - Monoid (Rec [] m)
Vasiliy
я с двух часов долбался...
Vasiliy
у меня есть список рекордов, а мне нужен рекорд списков
Vasiliy
эдакий sequenceA
Зигохистоморфный
Vasiliy
ну да, но в данном случае решение получилось другое - foldMap (rmap (Compose.(:[])))
Vasiliy
жуть какая :D
кана
Как часто и с какой охотой кто использует линзы? Мне по некоторым причинам не хочется их использовать, и тащить TH тоже
Vasiliy
можно взять microlens, например, оно гораздо легче
Vasiliy
я стараюсь использовать, где получается
kosc
Ребят, объясните плз, что ещё за линзы? Или ссылкой в меня киньте.
Vasiliy
https://hackage.haskell.org/package/lens
Aleksei (astynax)
Широко используем. И не только простые линзы - траверсалы, призмы, вот это всё
Aleksei (astynax)
Бояться линз - жить грустно
Aleksei (astynax)
Микролинзы, увы, только простую оптику умеют, а самый смак в непростой
Aleksei (astynax)
Да и писать линзы руками лениво, так что и с микролинзами будет TH
Alexander
в микролинзах нету травераблов же?
Alexander
он вообще бесполезен
Aleksei (astynax)
Зато можно притащить в либу, где нужны только сеттеры/геттеры и не хочется нагружать толстыми lens пользователей. Впрочем, траверсаблы часто нужны, если уж линзы пользуешь
Зигохистоморфный
Aleksei (astynax)
Пример чего?
Aleksei (astynax)
Э... да хоть в подрекорды сходить, если подрекордов - список.
Зигохистоморфный
Aleksei (astynax)
User ^.. uFriends . traversed . uPets . _Cat . name
Vasiliy
λ> [(1, 2), (3, 4)] & each._1 %~ show
[("1",2),("3",4)]
Aleksei (astynax)
Vasiliy
вот ещё в коде нашёл findIndexOf (clients.itraversed) (elemOf _3 regCode) db
Vasiliy
находит в базе id клиента, у которого в третьем поле такой-то regCode
Vasiliy
вот ещё побольше пример https://www.schoolofhaskell.com/user/tel/lens-aeson-traversals-prisms
Aleksei (astynax)
Вот да, обработка XML/JSON с траверсалами без полной распаковки в типы - и даже без описания полной схемы!
Aleksei (astynax)
Вот это отличный пример полезности оптики
кана
Как
map f . map g == map (f . g)
Так и
p &&. q = \x -> p x && q x
filter p . filter q == filter (p &&. q)
Этот шаблон можно как-то обобщить.
Эндоморфизмы - моноид по композиции, предикаты - по энду
Cheese
Зигохистоморфный
Leonid 🦇
А чего сегодня ничего не пишите?
Anatolii
Надо придумать наброс
Vasiliy
у меня есть вопросик тогда
Vasiliy
в чём разница между (C1 a, C2 b) => a -> b -> c и C1 a => C2 b => a -> b -> c?
кана
Даже не знал про то, что можно писать как во втором кейсе)
Alexander
нету разницы
Vasiliy
> data F where F :: Show a => Show b => a -> b -> F
<interactive>:26:14: error:
• Data constructor ‘F’ returns type ‘Show b => a -> b -> F’
instead of an instance of its parent type ‘F’
• In the definition of data constructor ‘F’
In the data type declaration for ‘F’
Alexander
ну это одно и тоже значит, а то что в GADT синтаксисе парсер другой это другое дело
Vasiliy
ага, я понял, спасибо
Vasiliy
я думал, может, какие-то глубинные особенности GADTs, а это парсер...
Vladislav
я бы это как feature request зарепортил
Vladislav
хотя и граничит с багом, но все-таки a => b => ... это не Haskell98, и в мануале не упоминается (вроде). Хотя очень логичная и правильная конструкция.
Vladislav
Багом кажется хотя б асимметрия — если уж отвергать, то и в функциях, и в GADT-ах, а иначе принимать и не жаловаться в обоих местах.
Alexander
мне кажется это какой-то побочный эффект что в функциях работает
Alexander
и.е. это не планировали, само получилось
Vladislav
Ну да.
Vladislav
Хотя это ж каррирование в чистом виде.
Кабачок
Очень приятная нотация, жаль в Idris не поддерживается
Дмитрий
Да, то что в функциях работает, а в GDTs нет, однозначно выглядит как баг, мне аж самому понравилось как выглядит такая нотация. Не удержался и попробовал. Действительно жаль, что GDTs такую конструкцию не признают :(
adam
Anonymous
https://vk.com/cat_programming?w=wall-63708206_248309
Dmitry
всем привет!
Dmitry
Андрей Мельников подал нам хорошую идею, и я решил вынести в массы
Dmitry
мы сделаем на fby(by) секцию lightning-докладов, где-то по 10 минут на доклад
Dmitry
скорее всего таким докладчикам дадим бесплатный билет на конфу, но это пока еще не точно
Dmitry
@Reworr можно пояснить про аддитивные технологии в течение двух минут?
Dmitry
может быть кому-нибудь хотелось бы выйти с коротеньким докладом на 10 минут и обсудить его с аудиторией?
Dmitry
тогда you are welcome!
Dmitry
@Reworr почему это должно быть здесь
Anonymous
Haskell == современные технологии == аддитивные технологии
Dmitry
@qnikst может быть ты что-нибудь интересненькое расскажешь из личной практики?
Dmitry
а то холивары холиварами, но я бы предложил вынести их на более широкую аудиторию, людям же интересно 😊
Dmitry
а какого рода доклады?
Alexander
могу в принципе, хотя черт знает что рассказывать, у меня истории простые, не уверен что особо интересные
Dmitry
ой мы смогли написать программу на хаскеле?
Dmitry
и запустить её в продакшон?
Dmitry
😃
Dmitry
Пару дней назад Александр помогал одному товарищу отладить его DSL для взаимодействующих процессов
Dmitry
по-моему — офигительная тема