@haskellru

Страница 296 из 1551
Lazzlo
12.06.2017
14:57:19
Понял, а что ты юзаешь?

Max
12.06.2017
14:59:01
У меня Э-к, сокеты для устройств, web-сокеты для дальнего интерконнекта (если на обоих оконечниках Э-к).

http://gearman.org/ http://nanomsg.org/ - ссылочки в тему :)

Lazzlo
12.06.2017
15:05:12
Окей спасибо большое

Google
Max
12.06.2017
15:09:20
А, да, еще отдельный цирк, когда сеть далека от тепличных условий. И когда требуется соблюсти порядок доставки сообщений.

Alexander
12.06.2017
15:17:29
в хацкель у него ещё и евентпол отдельный

Max
12.06.2017
15:19:47
А, да. Если падает zeromq - то падает вся аппликушка.

А оно падает... ну, не сильно редко.

Поэтому все делать надо с расчетом, что в любой момент прилетит.

Alexander
12.06.2017
15:44:13
да сигаборт на фейле какой-то операции меня порадовал

у меня сейчас проблема что он фд не закрывает хотя должен

и я в лимит влетаю

Max
12.06.2017
15:54:40
Огонь

Alexander
12.06.2017
15:57:08
собственно вместо того чтобы выдать ошибку он абортится

я боюсь что там паттерн использования кривой

Denis
12.06.2017
16:34:41
ReaderT наше все?) https://www.fpcomplete.com/blog/2017/06/readert-design-pattern

Alexander
12.06.2017
17:00:12
ReaderT Env IO хорошая штука и правильно пишет, а после как обычно какую-то хреноту

Google
Alexander
12.06.2017
17:00:24
ну т.е. не совсем хреноту, а как обычно

интересно, а то, что я с FP complete-овками разговаривал объясняя как мы используем такой паттерн повлияло на блог или нет

Dmitry
12.06.2017
17:18:29
@qnikst А можешь пояснить, что за хренота? Ну, в смысле, что как и обычно

Denis
12.06.2017
17:19:43
ReaderT Env IO удобно читать окружения, конфиги я так понял

это же вроде в Servant?

Alexander
12.06.2017
17:24:42
в общем ReaderT Env IO это половина того, что всегда надо

HasFoo класс типов это тоже хорошо, но я бы и методы в класс типов засунул т.к. можно переопределить иногда это важно

unsafePerformIO и котята это неверно, иногда оно очень надо

ну и там про State и ещё что-то странные размышления

то, что WriterT это монада для создания space leaks это верно (у него немного не так но смысл верный)

ну и его можно сделать правильным если через стейт написать, а стейт сам пофиксить или взять последние tf

Dmitry
12.06.2017
17:46:00
ну и его можно сделать правильным если через стейт написать, а стейт сам пофиксить или взять последние tf
Согласен. Это не монада плохая, это конкретная реализация не самая удачная. При другой реализации вполне себе отличный подход, который можно использовать в разных целях.

Alexander
12.06.2017
17:47:44
ну поидее writer не делает создает зависимость в собираемой части из-за этого проблемы

решается переписыванием через стейт

но там *> возникает

Alexander
12.06.2017
17:48:47
а т.к. по дефолту *> пишется через <*> (в непоследних tf) то там форсится значение где не надо

в итоге память все равно выжирается

но это исправляется специальным *> для стейта

@async_prince IO a -> a

Google
Alexander
12.06.2017
17:49:50
под локом

т.е. можно сделать thunk с IO действием в чистый контекст

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

Vladimir
12.06.2017
17:51:36
@async_prince IO a -> a
ну это как раз unsafePerformIO, это я знаю, а котята это что?

Alexander
12.06.2017
17:54:33
а..

ну в топике что выше снойман написал, что котёнок умирает, когда это используют

Anatolii
12.06.2017
18:00:30
а чем EitherT не угодил? мне нравится идея разделения на ошибки приложения и на все остальное(IO)

Denis
12.06.2017
18:04:34
наверное в пользу ExceptT?

Alexander
12.06.2017
18:05:30
ExcepT поверх IO кучу проблем приносит

отсутствие MonadMask как минимальное

в итоге это заканчивается переизобретением исключений

у Сноймана есть статья но этому поводу (как обычно biased и opionated),\ но норм

Alexander
12.06.2017
18:07:00
он там доказывает для это бесполезно

я согласен что оно бесполезно для юзера либы, с другой стороны для пишущего либу есть плюсы, он видит, с чем он может валиться и что будет выше обработано пользователем, все остально нужно через throwM

часто ли такое случается - если честно не знаю

Vasiliy
12.06.2017
19:00:03
возможно, ExceptT и ErrorT станут экземплярами MonadMask https://github.com/ekmett/exceptions/pull/59

Евгений
12.06.2017
19:05:13
ExcepT поверх IO кучу проблем приносит
Каких проблем, не очень понимаю? По мне так исключения это дётихак. Не такой страшный как unsafePerformIO, но всё равно: чем ближе код к тайп-сейфному, тем лучше.

Alexander
12.06.2017
19:06:30
Vasiliy я не понимаю инстанса для ErrorT и почему он правильный..

@elemir90 хотя бы наличия monad mask и некомпозабельность, точнее композабельность с хаками

в итоге получается переихоюретение исключений

Google
сегодня
12.06.2017
19:11:28
в итоге получается переихоюретение исключений
сложно новичку, столько терминов

Alexander
12.06.2017
19:11:49
@elemir90 не новичок, а писать для новичков я не всегда умею

:/

Евгений
12.06.2017
19:13:44
Я забросивший хаскель олдфаг, лол. Про монадмаск почитаю. А под "композабельностью" ты понимаешь невозможность состакать a и b в ErrorT a (... (ErrorT b ...))?

Vasiliy
12.06.2017
19:16:40
Vasiliy я не понимаю инстанса для ErrorT и почему он правильный..
я-то вообще ничего не понимаю, остаётся надеяться, что грамотные люди разберутся

Alexander
12.06.2017
19:16:46
один кусок возвращает одну ошибку, другой другую, в итоге нужно делать mapEitherT или как там его и их в одну структуру

Vasiliy release в bracket не отрабатывает в случае ошибки

если я не устал и не туплю

Admin
ERROR: S client not available

Alexander
12.06.2017
19:17:44
последнее вероятно

Vasiliy
12.06.2017
19:17:53
обычно жалобы на то, что чтобы слепить вместе ErrorT x m и ErrorT y m, нужно делать сумму x и y

Alexander
12.06.2017
19:19:20
+ case (eresource, eresult) of + (Left e, _) -> return $ Left e + (_, Left e) -> return $ Left e + (Right resource, Right result) -> runErrorT (release resource result))

ну вон жалоба эта 4мя сообщениями выше

а тут 2ой кейс

для него мы не вызываем release

Евгений
12.06.2017
19:20:01
обычно жалобы на то, что чтобы слепить вместе ErrorT x m и ErrorT y m, нужно делать сумму x и y
Объединение скорее. Потому что если пересечение типов x и y не пустое, то не надо его дважды включать

Монадмаск это https://hackage.haskell.org/package/exceptions-0.8.3/docs/Control-Monad-Catch.html ?

Alexander
12.06.2017
19:21:07
да

у меня смутное ощущение что проблема была в mask а не bracket

а понял

Google
Vasiliy
12.06.2017
19:23:47
там проблема в "if the base monad provides no ability to provide multiple exit"

насколько я читал

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

или как это по-русски сказать

Denis
12.06.2017
19:27:38
да
в чем профит от монадмаск?

Alexander
12.06.2017
19:27:48
можно использовать mask

зачем mask и что такое асинхронные исключения знаешь?

Denis
12.06.2017
19:28:15
можно пример?

Евгений
12.06.2017
19:28:22
Даже я не знаю

Alexander
12.06.2017
19:29:32
так начнем с асинхронных исключений

это такие исключение, которые можно послать в другой тред

соотв там в "произвольном месте" может возникнуть исключение что послали

обычно используют для прерывания тредов, но иногда и какой-то message passing с прерыванием выполнения делают

треду иногда не хочется чтобы его прибивали (как и в случае с сигналами), например хочется выделить ресурс и удалить в конце и чтобы ничего не помешало, или несколько действий которые должны быть все выполнены

для этого есть mask :: (forall b . IO b -> IO b) -> IO a -> IO a

так неправильно написал, ((forall b . IO b -> IO b) -> IO a) -> IO a

Denis
12.06.2017
19:32:43
это наподобии метода withException?

Alexander
12.06.2017
19:33:02
соотвественно мы вызываем mask $ \release -> ... и в ... не может возникнуь исключение

release нужен чтобы снова разрешить исключению прилетать

например bracket пишется как: bracket a r f = mask $ \release -> do x <- a ey <- try $ release x r x either throwIO return ey

Евгений
12.06.2017
19:34:21
это такие исключение, которые можно послать в другой тред
Это наркомания какая-то. А какое теоретическое обоснование этого театра абсурда? В моё время исключение было просто разновидностью боттом-значения

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