кана
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
аванс взял?
Oleg
Чет не могу понять, это шутка или нет
PoW требует, чтобы верификация работы была гораздо проще самой работы, так что довольно очевидно, что шутка
Leonid 🦇
лучший снек для хаскелиста
Ю ли я? 🤔
И салат "рекурсивный"
Leonid 🦇
https://ghc.haskell.org/trac/ghc/wiki/Building/Preparation/Linux оказывается там куча всего для nixos в билд е
isnullxbh
Ребят, подскажите, пожалуйста, чем вы пользуетесь в качестве среды разработки? Может кто-то подскажет _нечто_ такое, что легко настроить и начать писать код, не заботясь о том, что завтра выкатят новую версию Java, нужно искать ставить нужную версию компилятора Scala и т.п.
Aragaer
запустил чистый вим, открыл текстовый файл и начал писать код
Алексей
emacs + haskell-mode
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
Спасибо. Правда, это было для решение каты на Codewars, не уверен, что там можно подключить этот пакет
какой смысл решать какие-то задачи на хаскеле там, где сторонние библиотеки использовать нельзя?
Алексей
К синтаксису привыкнуть
Алексей
Не убегать в ужасе
Vladimir
Много причин возможно.
Vladimir
Для первоначального обучения -- вполне.
Vladimir
Или чтобы попрактиковаться в выразительности конструкций.
Vladimir
Чтобы потом и монады фиксить без бумажки)
A64m
"конструкции" в хаскеле - библиотечные функции обычно
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
лучше сигнатуры, чем везде доки писать и словесно сигнатуры описывать