Dmitry
типа такого
Да, спасибо, так лучше
кана
чет телега лагает у меня
Dmitry
Не видно!
Aleksei (astynax)
Лагает, да
Dmitry
вместо (&&&) теперь, вроде, bimap
Dmitry
ой, вру
кана
хм, это разные вещи &&& :: (a -> b) -> (a -> c) -> (a -> (b, c))
Dmitry
да, bimap это (***)
кана
типа такого
у тебя тут по моему только rec15 и используется, можно сразу смапать в него
кана
map (head &&& sum) . group . sort . map rec15
Dmitry
Не, rec1 ещё
кана
а, это я ошибся в своем решении
Dmitry
f = map (rec15 . head &&& sum . map rec1)
Dmitry
Ну я уже примерно так и написал, спасибо.
A64m
в GHC же есть (не совсем понятно зачем, правда) даже расширенный синтаксис для лист компрехеншонс, не очень популярный, я даже не вспомнил как называется экстеншн вспомнил только как пейпер про него назывался https://www.microsoft.com/en-us/research/wp-content/uploads/2007/09/list-comp.pdf
Alexander
а экстеншн жив ещё?
Зигохистоморфный
жив
Dmitry
Во, круть! Надо брать.
A64m
куда он денется?
Зигохистоморфный
Во, круть! Надо брать.
вот в тех же сорсах из книги beginning haskell как раз была глава про это расширение https://github.com/Apress/beg-haskell/blob/master/chapter3/src/Chapter3/Comprehensions.hs#L13-L19
Dmitry
Ваще отвал башки, я скоро выйду замуж за Haskell, блин!
A64m
наконец-то экстеншон нашел своего первого пользователя
Anatolii
я думаю spj с вадлером попользовались им чуток
A64m
им скорее авторы DSH попользовались (которые монад компрехеншонс возвращали)
Igor
Может кто-то объяснить что должен делать Traversable::sequence и Traversable::traverse?) Не очень понятно из описания на хаскелль вики
Dmitry
traverse ~ sequence . map ~ mapM
Mi Shа
Подскажите, можно ли реализовать инстанс для более конкретного типа, если реализация для абстрактного уже есть? Пример: instance Monad (Either String) where fail _ = Left "42"
A64m
надо читать http://strictlypositive.org/Idiom.pdf
A64m
и https://www.cs.ox.ac.uk/jeremy.gibbons/publications/iterator.pdf
Sergey
@ikomarov sequence делает грубо говоря из листа фьюч фьючу листов (это конкретный пример), а траверс это композиция map и sequence
Mi Shа
лучше этого не делать
Почему лучше не делать? Как все же можно это сделать?
Алексей
Ovelapping instances
Алексей
ключевое слово. Но оправдано это в основном, если занимаешься всяким программированием на уровне типов
Зигохистоморфный
traversable это как fmap только еще с аппликативным эффектом
A64m
как mapM
Sergey
http://risovach.ru/upload/2018/04/mem/padazhzhi_174472689_orig_.png
Sergey
извинити
Alexander
а как maximumOr красиво в линзостиле бы зопилить?
Alexander
ну кроме как maximum (default:...)
кана
а нужно ли это в линзостиле? сеттер-действие какое-то не очень очевидное
IC
есть у кого в закладках мини-туториал как сделать тайплевел роутинг "как в серванте"?
Alexander
мне нравится общность подхода там ко всяким partial и т.п. функциям
Alexander
тут то я запилю как выше написал
A64m
Prelude Control.Lens> [1..3] & maximumOf each & view (non 42) 3 Prelude Control.Lens> [] & maximumOf each & view (non 42) 42
A64m
Prelude Control.Lens> [] ^. to (maximumOf each) . non 42 42 Prelude Control.Lens> [1..3] ^. to (maximumOf each) . non 42 3
Leonid 🦇
линзомагия
Alexander
забавно, спасибо
кана
эээээ
кана
ошибка в доке?
A64m
почему?
A64m
из 1 вычитаем 1 - получаем 0
A64m
ноль - это заявленное дефолтное значение, т.е. пары с таким значением удаляются
Ю ли я? 🤔
/stat@combot
Combot
combot.org/chat/-1001043143583
кана
нифига @qnikst флудит
Alexander
ну я пишу короткие сообщения обычно
Alexander
не очень удивительно
Alexander
тут могло бы быть 1 сообщение, а не 3
A64m
надо байты считать
A64m
тогда победит @kana_sama - все время картинки с кодом постит потому что.
кана
ноуп
кана
не все время
кана
A64m
да, действительно
Dmitry
/stat@combot
Combot
combot.org/chat/-1001043143583
Leonid 🦇
скрипт дампающий бд и записывающий дамп в гугол на питоне занимал 89 строк, на хаскеле 312
Leonid 🦇
правда на питоне не парсились опции и не логгировалось
Leonid 🦇
44 строки это экстеншены и импорты
A64m
еще пара лет и 1200 строк будет
A64m
вербозный хаскель это модно сейчас
Dmitry
Alexander
скрипт дампающий бд и записывающий дамп в гугол на питоне занимал 89 строк, на хаскеле 312
если добавить в хаскель точек с запятой и фигурных скобок, вроде можно и в одну уложиться 👍
A64m
жемчужина моей коллекции безумных главных недостатков хаскеля > It's crazy that Haskell, with all its promise of making things safer by finding errors at compile time, is the only near-mainstream language where literals - the simplest most basic programming construct there is - cause run-time calculation, and can throw exceptions and crash your program. Crazy! This is the number one wart of Haskell at the moment.
Anatolii
я что-то не понял, а можно пример кода как это получить?