кана
import Control.Monad (join)
import Control.Monad.Fix (MonadFix, mfix)
import Data.Traversable (traverse)
mListFix :: MonadFix m => (a -> m [a]) -> m [a]
mListFix f = mfix (fmap join . traverse f)
Kirill
Спасибо, попробую
Aleksey
https://mail.haskell.org/pipermail/haskell-cafe/2018-April/128845.html
а мне норм
кана
Чет не могу понять, это шутка или нет
Denis
Чот перетолстили
Vitaly
Как шутка? А я уже на лекции новые времена анонсировал!
Yura
аванс взял?
Leonid 🦇
лучший снек для хаскелиста
Ю ли я? 🤔
И салат "рекурсивный"
Leonid 🦇
https://ghc.haskell.org/trac/ghc/wiki/Building/Preparation/Linux оказывается там куча всего для nixos в билд е
isnullxbh
Ребят, подскажите, пожалуйста, чем вы пользуетесь в качестве среды разработки? Может кто-то подскажет _нечто_ такое, что легко настроить и начать писать код, не заботясь о том, что завтра выкатят новую версию Java, нужно искать ставить нужную версию компилятора Scala и т.п.
Aragaer
запустил чистый вим, открыл текстовый файл и начал писать код
Алексей
emacs + haskell-mode
isnullxbh
Aragaer
есть и много, но я ими не пользуюсь
Aragaer
если хочется плагинов, то соответственно емакс, там плагины на (немного) более вменяемом языке
isnullxbh
Спасибо за совет)
isnullxbh
vim так vim :)
Yura
http://www.stephendiehl.com/posts/vim_2016.html
Yura
набор плагинов для vim
Антон
Извините, продублирую сюда
Антон
Народ, как можно пройтись по списку тремя предикатами одновременно?
Антон
У меня есть код просто вида
foo x = case (res1, res2, res3) of
...
where
res1 = any p1 x
res2 = any p2 x
res3 = any p3 x
Антон
То есть список проходится три раза. А хотелось бы проходить только один раз
Антон
Я, конечно, мог бы записать свою свёртку, но это слишком громоздко выходит
A64m
с помощью пакета foldl
Влод
A64m
нет
Влод
Он говорит что может запилить функцию для фолдл но лень
Влод
а ты предлагаешь ещё и либу со своим типом для фолдл
A64m
в чем противоречие-то?
Aleksei (astynax)
Есть такой пакет. Про красивые "свертки". Там как раз композятся функции, которыми сворачивание производится
Aleksei (astynax)
foldl, это он и есть вроде
Aleksei (astynax)
От Гонзалеса пакет
A64m
> L.fold ((,,) <$> L.all even <*> L.all odd <*> L.all (>0)) [2,4 .. 10]
(True,False,True)
Антон
Спасибо. Правда, это было для решение каты на Codewars, не уверен, что там можно подключить этот пакет
Leonid 🦇
https://medium.com/@Serokell/our-gift-to-cardano-community-9ad2d581598e
Eugeny
Ребят, привет. Начал учить недавно. Есть вопросы новичковые. Тут можно задавать или есть более приспособленные каналы/чаты/слаки для этого?
Eugeny
Ага, спасибо, пошел туда
A64m
Алексей
К синтаксису привыкнуть
Алексей
Не убегать в ужасе
Vladimir
Много причин возможно.
Vladimir
Для первоначального обучения -- вполне.
Vladimir
Или чтобы попрактиковаться в выразительности конструкций.
Vladimir
Чтобы потом и монады фиксить без бумажки)
A64m
"конструкции" в хаскеле - библиотечные функции обычно
Alexander
лучше тут
Alexander
Alexander
чтобы сторонние библиотеки не были магией
Dmitry
А подскажите, как быстро преобразовывать из Text в Vector Char? Как-то t2v = V.fromList . T.unpack нехорошо выглядит.
Alexander
должно зафьюзиться и быть норм
Dmitry
Хмм. А у него ж внутри Array, нельзя его как-то в Vector закастить?
Alexander
а так через Internal API текста доставать структуру Array что внутри и из нее через Bulk создавать вектор
Alexander
может стрим в стрим перегнать можно
Alexander
но я бы особо не загонялся пока не будет видно, что проблема там
Dmitry
Хм, ну ладно, попрофилирую.
Dmitry
А где этот Bulk, кстати?
Alexander
в вектор.стрим.балк
Dmitry
Спасибо!
Dmitry
@qnikst спам ^
A64m
> This issue ( :: ) is the most serious Haskell ergonomics issue I've encountered since discovering that head is a partial function and is still in the prelude
A64m
могу только позавидовать этому человеку (хотя он шутит, наверное)
Leonid 🦇
дык это проклятое первое апреля
Leonid 🦇
/me даже нравится ::, оно хорошо алайнится с ->
Denis
Я тоже злоупотребляю этим фактом
A64m
я что-то не уверен, кстати, что конс редко употребляется, интересно было бы это посчитать
Denis
конс на несколько порядкой реже сигнатур типов используется в среднем, наверняка
Denis
на собеседованиях с алгоритмами, разве что есть шансы сравняться
A64m
а все потому что проклятые сигнатурщики продвигают свои сигнатуры
A64m
которых, конечно, почти никогда быть не должно
Denis
в продакшоне должно
A64m
нет
Denis
потом черт ногу сломит чего накоммитили
Leonid 🦇
их не должно быть когда ghc будет как руст "мономорфизировать" весь код. и бинари будут еще в 5 раз толще.
Leonid 🦇
и уж либо сигнатуры либо доки.
Denis
даже так плохо без них будет
Leonid 🦇
сигнатуры мне haskell-mode вставит, а доки писать надо
Denis
лучше сигнатуры, чем везде доки писать и словесно сигнатуры описывать