Anatolii
но я думаю что не покажет :)
Dmitry
но я думаю что не покажет :)
Верно, parse error говорит. Спасибо :)
Anatolii
Exceptions Best Practices - School of Haskell | School of Haskell https://www.schoolofhaskell.com/user/commercial/content/exceptions-best-practices#exceptt-io-anti-pattern
какая-то странная статья, вот этот MonadError портит всю прелесть хаскеля, потому что могут же кинуть любой exception
Anatolii
мне очень Either нравится тем что возвращаемый тип всегда известен
SimpleX
какая-то странная статья, вот этот MonadError портит всю прелесть хаскеля, потому что могут же кинуть любой exception
Так да, любой. Получается, что это так себе средство для обработки ошибок.
SimpleX
Either для Exception не катит
SimpleX
В этом и суть
Anatolii
ну да
Anatolii
тут нельзя путать Exceptions и Errors
SimpleX
А MonadError - ерунда, потому что создает видимость безопасности
SimpleX
То есть у тебя теперь 2 канала для ошибок, а не один
Anatolii
ну скажем так, я бы если бы писал какой-то вебсервис
Anatolii
то у меня бы на самом верху был бы общий обработчик эксепшенов
SimpleX
Потому что затолкай IO в стек трансофрмера и вуаля.
Anatolii
с 500 ошибкой на клиент
Anatolii
и это считалось бы багом для меня
Anatolii
ну IO части надо писать вдумчиво
Anatolii
и ставить catch на Either
SimpleX
то у меня бы на самом верху был бы общий обработчик эксепшенов
Если у тебя обработчик на самом верху, ты что-то делаешь не так
Anatolii
ну это на случай багов скажем так, я хочу просто все в Either передавать
SimpleX
и ставить catch на Either
Нет, если у тебя Either MyError, ты не будешь ожидать оттуда исключения
Anatolii
ну я конечно новичок в хаскеле
Anatolii
это я сейчас ьак вижу
Anatolii
я не правильно выразился
Anatolii
я же могу Exception в Either перевести
Anatolii
вот этим и заниматся там где IO пишем, чтобы все приложение с Either работало
SimpleX
Да, с MonadCatch ты можешь делать то же самое
SimpleX
try $ myFunc a
Anatolii
я про MonadCatch еще не знаю
SimpleX
И будет Either SomeException a
Anatolii
спасибо
Anatolii
погляжу
Anatolii
круто
SimpleX
Если надо Обработать, это хэндлеры
Anatolii
в моем описание это был именно конвертер эксепшенов в эроры
Anatolii
да
SimpleX
А просто вытащить и не упасть - вот так
Anatolii
хэндлеры - это другое
SimpleX
А как ты собрался SomeException к MyException приводить?
Anatolii
над описать какой-то конвертер
SimpleX
Вот на хэндлерах и описывай же
Anatolii
ну после try ?
SimpleX
После try все равно придется кастовать
Vladimir
I put on my robe and wizard's hat.
Boris
Кстати статьи лещинского на icfp 2016 были
А не могли бы вы ссылку кинуть на его статьи? А то я что-то не нашел ;-(
Alexander
Там в разделе hpc было
Alexander
Не уверен что про Haskell вообще
Alexander
Попозже поищу
Boris
blkmrkt
Как упростить упаковку ByteString из Int-ов? Я не верю что это нормально: let reqUrlEncoded = urlEncodedBody [ ("owner_id", L.pack $ show wall), ("post_id", L.pack $ show post), ("lang", "ru"), ("offset", L.pack $ show offset), ("preview_length", L.pack $ show 0), ("count", L.pack $ show 100), ("v", "5.50") ] initReq { secure = True, method = "POST" }
blkmrkt
посмотрите пожлст, нормально ли релизован читатель очереди?
blkmrkt
посмотрите пожлст, нормально ли релизован читатель очереди?
Он форкается один раз и живет вечно – в очередь пишут много разных воркеров, но мне неочевидно блокируется ли запись в очередь, пока выполняется publishMsg и сериализация ЖСОНа в его аргументах (186 строка)
blkmrkt
посмотрите пожлст, нормально ли релизован читатель очереди?
как мне кажется, очередь блокируется лишь на момент ее опустошения в batch, и после 184 строки другие треды уже могут в нее писать
Cinder
Большинство тратит больше времени на хаскельный однострочник, чем на С++ портянку, так зачем им это нужно? Для реальных проектов он не годен хотябы из-за этого.
Vladimir
Зачем такие вещи говорить? Нам все нравится и интересно!
Vladimir
Ой щас начнется
Cinder
Дак и с неоднострочниками таже проблема.
Anatolii
сразу видно, у человека большой опыт работы с хаскелем
Vladimir
Больше на шовинизм похоже)
Cinder
Это правда
Cinder
сразу видно, у человека большой опыт работы с хаскелем
Cinder
По сути на хаскеле пишут ради вызова, не практичности ради
Misha
Большинство тратит больше времени на хаскельный однострочник, чем на С++ портянку, так зачем им это нужно? Для реальных проектов он не годен хотябы из-за этого.
ну и наздоровье. Есть миллион проектов, где с++ будет лучше хаскеля по ряду причин и такого же порядка количество, где будет наоборот. В чем, собственно, драма?
timothy
кто-то решил на ночь поесть и вы тут его кормите
Vladislav
сразу видно, у человека большой опыт работы с хаскелем
сразу видно человека, зашедшего в чат набросить на вентилятор
Anatolii
ты прав:)
Anatolii
точно на вентилятор набрасывает
Cinder
Ты лучше расскажи когда они компилятор поправят?
Cinder
http://ideone.com/m1xjqN
Большинство тратит больше времени на хаскельный однострочник, чем на С++ портянку, так зачем им это нужно? Для реальных проектов он не годен хотябы из-за этого.
большинство тратит больше времени прочитать детскую книгу на английском языке, чем на русском прочитать войну и мир, зачем им это нужно? для реальной жизни он не годен хотя бы изза этого.
По сути на хаскеле пишут ради вызова, не практичности ради
новый уровень практичности, и порог входа чтобы воспользоваться преимуществами нового, нужно инвестировать ресурсы в изучение этого нового, или стать ментальным легаси, выбор всегда есть
Cinder
Порог вхождения ты называешь многословность для вещей, которые делаются тривиально в другом языке?
Cinder
import Data.Array.IO main = do arr <- newArray (1,10) 37 :: IO (IOArray Int Int) a <- readArray arr 1 writeArray arr 1 64 b <- readArray arr 1 print (a, b)
Cinder
вроде простая вещь, а сколько написали...
Cinder
и что ты тут сложного увидел?
Vladislav
и что ты тут сложного увидел?
предлагаю написать аналог на c++ для тренировки