Anatolii
но я думаю что не покажет :)
Anatolii
Anatolii
мне очень Either нравится тем что возвращаемый тип всегда известен
SimpleX
SimpleX
Either для Exception не катит
SimpleX
В этом и суть
Anatolii
ну да
Anatolii
тут нельзя путать Exceptions и Errors
SimpleX
А MonadError - ерунда, потому что создает видимость безопасности
SimpleX
То есть у тебя теперь 2 канала для ошибок, а не один
Anatolii
ну скажем так, я бы если бы писал какой-то вебсервис
Anatolii
то у меня бы на самом верху был бы общий обработчик эксепшенов
SimpleX
Потому что затолкай IO в стек трансофрмера и вуаля.
Anatolii
с 500 ошибкой на клиент
Anatolii
и это считалось бы багом для меня
Anatolii
ну IO части надо писать вдумчиво
Anatolii
и ставить catch на Either
Anatolii
ну это на случай багов скажем так, я хочу просто все в Either передавать
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
А просто вытащить и не упасть - вот так
Evgeniy
Anatolii
хэндлеры - это другое
SimpleX
А как ты собрался SomeException к MyException приводить?
Anatolii
над описать какой-то конвертер
SimpleX
Вот на хэндлерах и описывай же
Anatolii
ну после try ?
SimpleX
После try все равно придется кастовать
Vladimir
I put on my robe and wizard's hat.
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
посмотрите пожлст, нормально ли релизован читатель очереди?
Cinder
Большинство тратит больше времени на хаскельный однострочник, чем на С++ портянку, так зачем им это нужно? Для реальных проектов он не годен хотябы из-за этого.
Vladimir
Зачем такие вещи говорить? Нам все нравится и интересно!
Vladislav
Vladimir
Ой щас начнется
Cinder
Дак и с неоднострочниками таже проблема.
Anatolii
сразу видно, у человека большой опыт работы с хаскелем
Vladimir
Больше на шовинизм похоже)
Cinder
Это правда
Cinder
сразу видно, у человека большой опыт работы с хаскелем
Anonymous
Cinder
По сути на хаскеле пишут ради вызова, не практичности ради
timothy
кто-то решил на ночь поесть и вы тут его кормите
Misha
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
и что ты тут сложного увидел?