@haskellru

Страница 129 из 1551
SimpleX
31.10.2016
08:56:52
Я бы не стал использовать исключения напрямую

Так можно обернуть в EitherT и получить ошибку в Left

Anatolii
31.10.2016
08:58:16
я вот тоже поддерживаю такой подход

Google
Anatolii
31.10.2016
08:58:24
потому что это какая-то джава получится а не хаскель

SimpleX
31.10.2016
08:58:38
Либо так, либо без исключений, тем более в либе

blkmrkt
31.10.2016
08:59:06
(MonadIO io, MonadThrow io) => ... -> io a
я пока слабо себе представляю как пользоваться монадами. по сигнатуре видно что это что-то, заверноутое в что-то другое, но непонятно тип ли это из какой либы монад, или подразумевается что его нужно определять самому

SimpleX
31.10.2016
08:59:08
Имхо

Пакет exceptions

Там есть доки

Evgenij
31.10.2016
08:59:55
SimpleX
31.10.2016
09:00:11
Нафиг errors

Evgenij
31.10.2016
09:00:19
Почему?

SimpleX
31.10.2016
09:01:26
Exceptions Best Practices - School of Haskell | School of Haskell https://www.schoolofhaskell.com/user/commercial/content/exceptions-best-practices#exceptt-io-anti-pattern

Evgenij
31.10.2016
09:01:40
Спсб

SimpleX
31.10.2016
09:01:50
Потому что это еще один плохой способ

И лучше в своем коде писать общий вид функций

Google
SimpleX
31.10.2016
09:03:54
То есть не IO, а MonadIO

Не Int/Word etc, а Integral или Num. Там, где это имеет смысл, конечно.

Тогда либой будет куда легче пользоваться

corpix
31.10.2016
11:26:01
О благородные судари, подскажите пожалуйста изучающему. В хаскеле "+", например, является функцией. Отсюда у меня возникает вопрос, является ли функцией "="?

Anatolii
31.10.2016
11:50:30
это лгеко проверить

зайди в ghci

и забей

:t (=)

если это функция

то оно тебе тип покажет

но я думаю что не покажет :)

corpix
31.10.2016
11:51:53
но я думаю что не покажет :)
Верно, parse error говорит. Спасибо :)

Anatolii
31.10.2016
11:51:59
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

мне очень Either нравится тем что возвращаемый тип всегда известен

SimpleX
31.10.2016
11:55:22
какая-то странная статья, вот этот MonadError портит всю прелесть хаскеля, потому что могут же кинуть любой exception
Так да, любой. Получается, что это так себе средство для обработки ошибок.

Either для Exception не катит

В этом и суть

Anatolii
31.10.2016
11:56:04
ну да

тут нельзя путать Exceptions и Errors

SimpleX
31.10.2016
11:56:43
А MonadError - ерунда, потому что создает видимость безопасности

Google
SimpleX
31.10.2016
11:57:09
То есть у тебя теперь 2 канала для ошибок, а не один

Anatolii
31.10.2016
11:57:22
ну скажем так, я бы если бы писал какой-то вебсервис

то у меня бы на самом верху был бы общий обработчик эксепшенов

SimpleX
31.10.2016
11:57:38
Потому что затолкай IO в стек трансофрмера и вуаля.

Anatolii
31.10.2016
11:57:39
с 500 ошибкой на клиент

и это считалось бы багом для меня

ну IO части надо писать вдумчиво

и ставить catch на Either

SimpleX
31.10.2016
11:58:28
то у меня бы на самом верху был бы общий обработчик эксепшенов
Если у тебя обработчик на самом верху, ты что-то делаешь не так

Anatolii
31.10.2016
11:58:56
ну это на случай багов скажем так, я хочу просто все в Either передавать

SimpleX
31.10.2016
11:59:04
и ставить catch на Either
Нет, если у тебя Either MyError, ты не будешь ожидать оттуда исключения

Anatolii
31.10.2016
11:59:06
ну я конечно новичок в хаскеле

Anatolii
31.10.2016
11:59:09
это я сейчас ьак вижу

я не правильно выразился

я же могу Exception в Either перевести

вот этим и заниматся там где IO пишем, чтобы все приложение с Either работало

SimpleX
31.10.2016
12:01:38
Да, с MonadCatch ты можешь делать то же самое

try $ myFunc a

Anatolii
31.10.2016
12:02:16
я про MonadCatch еще не знаю

SimpleX
31.10.2016
12:02:17
И будет Either SomeException a

Google
Anatolii
31.10.2016
12:02:19
спасибо

погляжу

круто

SimpleX
31.10.2016
12:02:43
Если надо Обработать, это хэндлеры

Anatolii
31.10.2016
12:03:02
в моем описание это был именно конвертер эксепшенов в эроры

да

SimpleX
31.10.2016
12:03:05
А просто вытащить и не упасть - вот так

Anatolii
31.10.2016
12:03:09
хэндлеры - это другое

Admin
ERROR: S client not available

SimpleX
31.10.2016
12:03:59
А как ты собрался SomeException к MyException приводить?

Anatolii
31.10.2016
12:04:16
над описать какой-то конвертер

SimpleX
31.10.2016
12:04:32
Вот на хэндлерах и описывай же

Anatolii
31.10.2016
12:04:46
ну после try ?

SimpleX
31.10.2016
12:05:28
После try все равно придется кастовать

Vladimir
31.10.2016
16:05:50
I put on my robe and wizard's hat.

Boris
31.10.2016
16:14:54
Кстати статьи лещинского на icfp 2016 были
А не могли бы вы ссылку кинуть на его статьи? А то я что-то не нашел ;-(

Alexander
31.10.2016
16:50:05
Там в разделе hpc было

Не уверен что про Haskell вообще

Попозже поищу

Google
Boris
31.10.2016
16:52:18
blkmrkt
31.10.2016
17:05:43
Как упростить упаковку 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" }

Он форкается один раз и живет вечно – в очередь пишут много разных воркеров, но мне неочевидно блокируется ли запись в очередь, пока выполняется publishMsg и сериализация ЖСОНа в его аргументах (186 строка)

как мне кажется, очередь блокируется лишь на момент ее опустошения в batch, и после 184 строки другие треды уже могут в нее писать

Sergey
31.10.2016
21:02:49
Большинство тратит больше времени на хаскельный однострочник, чем на С++ портянку, так зачем им это нужно? Для реальных проектов он не годен хотябы из-за этого.

Vladimir
31.10.2016
21:03:35
Зачем такие вещи говорить? Нам все нравится и интересно!

Vladimir
31.10.2016
21:04:18
Ой щас начнется

Sergey
31.10.2016
21:04:46
Дак и с неоднострочниками таже проблема.

Paul
31.10.2016
21:04:58
Код-расизм.

Anatolii
31.10.2016
21:05:16
сразу видно, у человека большой опыт работы с хаскелем

Vladimir
31.10.2016
21:05:16
Больше на шовинизм похоже)

Sergey
31.10.2016
21:05:57
Это правда

сразу видно, у человека большой опыт работы с хаскелем

eugene
31.10.2016
21:07:03
Sergey
31.10.2016
21:07:10
По сути на хаскеле пишут ради вызова, не практичности ради

Misha
31.10.2016
21:07:33
Большинство тратит больше времени на хаскельный однострочник, чем на С++ портянку, так зачем им это нужно? Для реальных проектов он не годен хотябы из-за этого.
ну и наздоровье. Есть миллион проектов, где с++ будет лучше хаскеля по ряду причин и такого же порядка количество, где будет наоборот. В чем, собственно, драма?

Timothy
31.10.2016
21:07:44
кто-то решил на ночь поесть и вы тут его кормите

Misha
31.10.2016
21:07:54
Vladislav
31.10.2016
21:08:09
сразу видно, у человека большой опыт работы с хаскелем
сразу видно человека, зашедшего в чат набросить на вентилятор

Anatolii
31.10.2016
21:09:37
ты прав:)

Страница 129 из 1551