SimpleX
Кстати, есть хорошие статьи на тему "как писать высокопроизводительный код"?
Alexander
Блог тиббе статьи лещинского
Alexander
Донса
Alexander
Они не очень много пишут сейчас правда
Alexander
Кстати статьи лещинского на icfp 2016 были
Alexander
Жалко вообще что он из ms research ушеш
Sergey Ufocoder
Всем привет, подскажет ли кто нибудь, в телеграмме есть канал по elm lang?😀
Evgeniy
Evgeniy
Прбовал кто делать в стэке мультипроект?
blkmrkt
г-ди что же это за нафиг, как бесит! Откуда вообще такая ошибка может быть? Я вручную подправил cabal.yaml, как заставить stack поставить новые версии либ? В старой версии баг, он все ломает
blkmrkt
почему не получается поставить последнюю версию http-client?
blkmrkt
вот сюда я конкретные версии вписал
blkmrkt
https://github.com/snoyberg/http-client/issues/175
Вот тут это починили, но не могу понять как мне установить последнюю версию http-client
уууууууу бесит!
blkmrkt
blkmrkt
ок, а каким образом можно v0.5.3.3 вот этого пакета поставить?
blkmrkt
Почему если не указываешь версию пакета explicitly, ставится старая мажорная версия, зачастую устаревшая на 2 версии от той что на гитхабе? Можно ли как-то заставить стак ставить всегда последние версии?
Evgeniy
blkmrkt
В stack.yaml прописал?
да все по совету. просто не понял почему stackage пишет версию пакета 0.4.31.1 рядом с LTS 7.6 на скриншоте, когда у меня спокойно поставилась версия 0.5.3.3 с этим же lts в stack.yaml
Evgeniy
В секции extra-deps указываются то чего нет в снапшоте
Evgeniy
stack.yaml specifies which packages to include из док
Vladimir
О, вот и для меня понятней стало, спасибо!
Evgeniy
Ну надо просто доку читать там почти всё написано https://docs.haskellstack.org/en/stable/GUIDE/#stackyaml-vs-cabal-files - хотя не всё)))
Evgeniy
https://docs.haskellstack.org/en/stable/GUIDE/#adding-dependencies
Evgeniy
stack path - хорошая команда
Evgeniy
позволяет посмотреть окружение
Anatolii
Помойму у стака документация была не плохая
Anatolii
И в каком-то из выпусков бананов и линз рассказывали про стак
Anatolii
Да, жить хорошо и просто 😀
Evgeniy
Типа скачал хэллоуворд и он должен запуститься почти без проблем
Anonymous
blkmrkt
А кто-нибудь писал многопоточный кравлер на хаскеле? Нужно выжать максимум производительности, интересуют типичные подводные камни.
Я вот использую http-client, и мучался с непонятными багами с HTTPS_PROXY из environment. Чудом обнаружил что автор активно поддерживает это дело на гитхабе, и вся туса там в /issues. Оказалось что у меня была старая версия пакета. В новой версии уже общий Manager не жрет 40GB RAM на 500 подключений с tls, и добавлено куча удобных утилити ф-й.
Evgeniy
blkmrkt
Вот еще всегда хотел спросить – почему в хаскеле такая странная система импортов через категории, по типу веб-порталов конца девяностых-начала нулевых? Почему не import "http-client" например? Если появится конкурирующая с http-client либа, она тоже поместится под Network.HTTP.Client?
blkmrkt
а в go мне этот хорёк не нравится, ненавижу его
blkmrkt
и еще слышал что у хаскеля более продумано распараллеливание на N ядер в отличае от го
Evgeniy
А как ты обрабатывешь "ошибки" в этом "кравлере" - я опять про 10 способов почитал и опечалился снова)))
blkmrkt
blkmrkt
еще retryN
blkmrkt
меня вообще вот эта статья натолкнула на хаск http://www.michaelnielsen.org/ddi/how-to-crawl-a-quarter-billion-webpages-in-40-hours/
blkmrkt
ой не не эта, какая-то другая, тоже EC2, только код на хаскеле
Alexander
blkmrkt
Alexander
Alexander
Evgeniy
Alexander
я иногда делаю stack sh и внутри кабал/pure ghc
Alexander
но это на свой страх и риск и не повторять
SimpleX
SimpleX
Я бы не стал использовать исключения напрямую
SimpleX
Так можно обернуть в EitherT и получить ошибку в Left
Anatolii
я вот тоже поддерживаю такой подход
Anatolii
потому что это какая-то джава получится а не хаскель
SimpleX
Либо так, либо без исключений, тем более в либе
blkmrkt
(MonadIO io, MonadThrow io) => ... -> io a
я пока слабо себе представляю как пользоваться монадами. по сигнатуре видно что это что-то, заверноутое в что-то другое, но непонятно тип ли это из какой либы монад, или подразумевается что его нужно определять самому
SimpleX
Имхо
SimpleX
Пакет exceptions
SimpleX
Там есть доки
Evgeniy
SimpleX
Нафиг errors
Evgeniy
Почему?
SimpleX
Exceptions Best Practices - School of Haskell | School of Haskell
https://www.schoolofhaskell.com/user/commercial/content/exceptions-best-practices#exceptt-io-anti-pattern
Evgeniy
Спсб
SimpleX
Потому что это еще один плохой способ
SimpleX
И лучше в своем коде писать общий вид функций
SimpleX
То есть не IO, а MonadIO
SimpleX
Не Int/Word etc, а Integral или Num. Там, где это имеет смысл, конечно.
SimpleX
Тогда либой будет куда легче пользоваться
Dmitry
О благородные судари, подскажите пожалуйста изучающему.
В хаскеле "+", например, является функцией. Отсюда у меня возникает вопрос, является ли функцией "="?
Anatolii
это лгеко проверить
Anatolii
зайди в ghci
Anatolii
и забей
Anatolii
:t (=)
Anatolii
если это функция
Anatolii
то оно тебе тип покажет