Зигохистоморфный
ну и жесть
все уже украдено (сделано) до нас https://www.stackage.org/haddock/lts-12.6/split-0.2.3.3/Data-List-Split.html#v:chunksOf
Глеб
здрасьте не подскажите, как реализовать в хаскиле функцию, которая берет лист, число n и возвращает лист листов по n элементов? group::[a]->Int->[[a]] group [1,4,8,8] 2=[[1,4],[8,8]]
group :: [Int] -> Int -> [[Int]] group ints groupSize = group' ints [] 0 [] where group' [] currentGroup _ groups | null currentGroup = groups | otherwise = (currentGroup:groups) group' (x:xs) currentGroup currentGroupSize groups | currentGroupSize == groupSize = group' xs [x] 1 (currentGroup:groups) | otherwise = group' xs (x:currentGroup) (currentGroupSize + 1) groups
Aleksei (astynax)
И что, теперь каждый напишет свой вариант?
Ilya
кстати, как цепочки композиций/долларов лучше записывать? В линию или как в расте?
Ilya
grp n = map (map snd) . groupBy ((==) `on` (`div` n) . fst) . zip [0..] grp n = map (map snd) . groupBy ((==) `on` (`div` n) . fst) . zip [0..]
Aleksei (astynax)
Нет единого мнения
Кабачок
тогда уж chunk n = map (map snd) . groupBy ((<) `on` fst) . zip (concat $ repeat [1..n])
Ilya
тогда уж chunk n = map (map snd) . groupBy ((<) `on` fst) . zip (concat $ repeat [1..n])
chunk n = map (map snd) . groupBy ((<) `on` fst) . zip (cycle [1..n])
Ilya
да, это лучше, чем с div возиться
Dmitry
Ребят, не останавливаемся! Продолжаем предлагать варианты!
Alexander
а что?
Alexander
и не выпендриваться
Ilya
и не выпендриваться
но мы же в хаскеле
Alexander
пакет split тоже в хаскеле
Alexander
ещё в линзах наверняка есть
Alexander
map snd . groupBy fst . zip (replicate n True++replicate n False)
Alexander
== on fst
Alexander
и cycle $ перед репликейтом
Dmitry
Оно не то будет выделять
Dmitry
Ааа
Dmitry
От оно как
A64m
тем временем, ушедший на хагс хлопнув дверью клайден, вернулся в пропозалы притопить против линз
Alexander
да
Alexander
мне лень полный вариант копировать было
Leonid 🦇
вот это есть где-нибудь в base? onNothing :: Monad m => m (Maybe b) -> m b -> m b onNothing m act = maybe act pure =<< m а то в каждом проекте всплывает и приходится кривится и придумывать имя для модуля куда это сунуть
Aleksei (astynax)
В каком-нить Foundation есть, а в base не помню такого
Dmitry
http://hackage.haskell.org/package/supervisor-0.1.1.0/docs/Control-Monad-Supervisor-Session.html#v:onNothing
A64m
<имя модуля в котором это должно быть>.Ext
Зигохистоморфный
ну и еще https://hackage.haskell.org/package/witherable-0.2/docs/Data-Witherable.html
A64m
ну вот что первое пришло в голову - так и называть
Зигохистоморфный
Control.Monad? Data.Maybe?
ну тогде Митчеловский extra https://www.stackage.org/haddock/lts-12.6/extra-1.6.9/Control-Monad-Extra.html
Leonid 🦇
какой же стэкедж нечитаемый
Leonid 🦇
а чего на стэкедже не пишут зависимости?
Leonid 🦇
не вижу
Cheese
Leonid 🦇
жуткие цвета какие
Cheese
жуткие цвета какие
синие ссылки? о боже!
Leonid 🦇
бирюзовые, на мерзком сером
Leonid 🦇
хуже было бы только веб-1.0 under constructions с чёрным фоном со звёздами, желтым текстом и гифками
Cheese
отличные цвета. у тебя монитор плохой, наверно
Leonid 🦇
или глаза, да?
Cheese
нет, монитор
Cheese
это не бирюзовый, а нормальный голубой, по-моему
Alexander
Cheese
странные вы
Cheese
у меня и у Сноймана читаемые
Ю ли я? 🤔
Какие привереды все
Leonid 🦇
это эйблизм
Alexander
мне кажется, что это глупо серьезно, утверждать, что то что нравится тебе хорошее, с т.з. читаемости
Dmitry
Кстати, onNothing m act = foldl (const id) act m, если это поможет.
Cheese
#08c, действительно, к бирюзовому ближе
Alexander
только так же как серьезно утверждать, что оно плохое
Cheese
это эйблизм
включи себе кастомный стиль
Alexander
проще поныть
Leonid 🦇
да ладно еще ссылки. зачем такой уродский серый цвет? на нём же невозможно читать
Alexander
хорошо там хотя бы информация не теряется как раньше
Ilya
Кстати, onNothing m act = foldl (const id) act m, если это поможет.
сомнительно. куда бинд подевался?
Alexander
когда вывод инстансов и фамилий поломали
Dmitry
Какой бинд?
Ilya
монадный
Dmitry
У меня работает: λ> let onNothing m act = foldl (const id) act m λ> onNothing (Just (print 5)) (print 10) 5 λ> onNothing Nothing (print 10) 10
Cheese
с чего это?
тон ближе к C, чем к B
Aleksei (astynax)
бирюзовый vs стекеджовый
Cheese
бирюзовый vs стекеджовый
почему это бирюзовый?
Aleksei (astynax)
тон ближе к C, чем к B
По составляющим смотреть близость - такое. По hue ещё я мог бы понять сравнение