Alexander
мне казалось ещё где-то было
Alexander
tail чаще применяется
Alexander
4 hfpf
Alexander
раза
Антон
В копилку "на забывание": в разных источниках рекомендуется разное по поводу foldr, foldl и foldl'. Кажется, все из них сходятся, что foldl не стоит использовать, а насчет foldr и foldl' мнения расходятся.
Так, кхм, вроде ж ясно — если свёртка в скаляр, то foldl', если свёртка функцией, которая может вернуть результат, не вычисляя второй аргумент — foldr
Alexander
строгая функция foldl', ленивая по второму агрументу foldr
Alexander
при желании через foldr выражается все
Зигохистоморфный
Alexander
ну map то в первую очередь через него выражается
Alexander
> "map" [~1] forall f xs. map f xs = build (\c n -> foldr (mapFB c f) n xs)
Alexander
собственно через него map и выражен
Alexander
если что это хорошее упражнение
Alexander
Data.List переписать в терминах foldr
Зигохистоморфный
катой их, катой
Denis
кого-то катоем обозвали
adam
Да вроде есть такая ката уже
Зигохистоморфный
Антон
И вообще, рекурсивные схемы — вещь полезная, но малость мозг выносят
Зигохистоморфный
Слишком generic
дерайвь их
https://hackage.haskell.org/package/catamorphism
Зигохистоморфный
ну и https://github.com/Lysxia/generic-recursion-schemes
IC
обычные схемки сами умеют дерайвить без этого всего
Антон
IC
https://hackage.haskell.org/package/supermonad
are those... superpipes?
Зигохистоморфный
Антон
Alexander
fmap mappend . sequence есть же что-то готовое для этого?
Alexander
mconcat вместо mappend
Зигохистоморфный
более обобщенно тогда
fmap fold . sequence
Антон
Alexander
я кстати вроде так и не прошёл её
Alexander
codewars же выше
Alexander
там есть поиск и список и все такое
Alexander
каты = задачки на этом сайте
Зигохистоморфный
Alexander
регистрация через github
Ilya
по рангам
ты все ранги прошёл?:) по Haskell
Зигохистоморфный
Зигохистоморфный
немного первого уровня и второго
Alexander
1 и 2 же основные?
Антон
Зигохистоморфный
Alexander
так блин как в этой дурацкой tasty передавать -p
Alexander
на каждом втором символе пишет что can't parse
IC
https://github.com/judah/pier новая сборочка. для тех, кто любит стакадж, но не стак.
Зигохистоморфный
тут недавно и такое было https://github.com/aisamanra/cab
Denis
треш какой-то
Alexander
Maxim
> билд-тулза для хаскеля
> написана на расте
все что вам надо знать о
Alexander
о чем?
Maxim
а сами додумайте :)
Maxim
полиморфная шутка
Alexander
о программистах на расте?
Ilya
fmap mappend . sequence есть же что-то готовое для этого?
тип этой штуки такой f :: (Monad f, Monoid b) => [f b] -> f b
кажется, что концептуально тут можно просто сделать mconcat, если будет подходящий инстанс
instance (Monad f, Monoid m) => Monoid (f m) where
mempty = return mempty
mappend = liftM2 mappend
Это скомпилировалось, но надо проверить законы.
Для некоторых стандартных монад такие инстансы впрочем есть
instance Monoid a => Monoid (Maybe a) -- Defined in ‘GHC.Base’
instance Monoid b => Monoid (a -> b) -- Defined in ‘GHC.Base’
проверил fmap mconcat . sequence === mconcat на парочке входов — результаты совпали.
IC
https://github.com/lyokha/nginx-haskell-module
🚎
Ilya
Cheese
Alexander
да
Антон
Напомните, которые векторы надо использовать (какие не текут)?
Антон
И ещё, какие есть заметные отличия Data.Vector и Data.Array (которые мутабельные)?
Антон
А то мне для решения прям именно мутабельный массив нужен, а я не знаю, что использовать
Alexander
из пакета vector
Alexander
там есть мутабельные, storable или unboxed не накапливают санки
Alexander
оптимизациями, количеством функций, адекватностью интерфейса
Alexander
причин использовать array в 2!14 году нету
Антон
Alexander
у вектором могут быть проблемы со сверхспециализацией