
Alexander
28.03.2018
13:22:10
а half
ок

Leonid
28.03.2018
13:22:33
для half была либа у кметта
/me помнит как half (через openexr) 10 лет назад завоевал индустрию графония. И как потом игроделы приписали победу себе

Google

Pineapple
28.03.2018
13:28:51
Я с double precision алетаю на проблемы с округлением и переполнения. Как жить с half вообще не представляю

A64m
28.03.2018
13:30:46
там же операций мало наверное, это всякие итерационные методы превращают содержание какого-нибудь несчастного флоата в говно мгновенно

Leonid
28.03.2018
13:31:20
half для хранения по большому счёту

Pineapple
28.03.2018
13:32:24
И на точность плевать. Там же 3-4 значащих цифры
quad precision тогда уж

A64m
28.03.2018
13:33:23
ну и судя по смешным роликам из игр понятно как они там физику считают

Denis
28.03.2018
13:34:35
А как надежнее отсечки сделать, чем с помощью threadDelay? threadDelay дает слабые гарантии что выполнение к этому треду перейдет когда надо(ну и я из него хочу другие треды покиллять).

Alexander
28.03.2018
13:36:36
у тебя это действительно проблема?

Denis
28.03.2018
13:36:50
теоретизирую
я просто думаю что не узнаю даже, если это будет проблемой

Alexander
28.03.2018
13:37:04
в рамках чистого haskell более надёжного не будет
имхо

Google

Alexander
28.03.2018
13:37:29
какой-нить с тред сделать из него форкнуть другой тред, который независимо от rts работать будет и не возвращаться
там делей на системном таймере
но тогда возникнет вопрос, как покилять треды и вернуться в rts
сходу я вижу только постать что в хэндл
но там твой вопрос опять возникнет
как пробудится тред который читает сокет

Leonid
28.03.2018
13:39:02
синхронизируйте треды через примитивы синхронизации

Alexander
28.03.2018
13:39:02
учитывая что если все треды будут делать print $ last $ cycle 0
то никогда
так что я бы решал как-нить совсем по другому
или не волновался

Denis
28.03.2018
13:40:38
https://hackage.haskell.org/package/stm-delay-0.1.1.1/docs/Control-Concurrent-STM-Delay.html вот тут что-то оригинальное
а хотя это не про то

Alexander
28.03.2018
13:41:21
registerDelay видел?
в stm?
а ну на него этот пакет ссылается
у тебя все равно внутри через GHC.Event работает
а ты ему не доверяешь

Denis
28.03.2018
13:45:57
а почему там TVar Bool?

Yuriy
28.03.2018
13:46:09

Google

Denis
28.03.2018
13:46:20
я чего-то вроде TVar (Maybe a) ожидал

Alexander
28.03.2018
13:46:32
откуда там a?

Yuriy
28.03.2018
13:46:38
главное, что Float16 есть в моём ТЗ

Alexander
28.03.2018
13:46:47
эта штука создает TVar, в котором False на True меняется
можно делать что-то вроде registerDelay i >>= \d -> atomically (asum [readTVar d >>= check, ...])
@cblp_su тут про какой-то пакет кметат говорили

Denis
28.03.2018
13:48:21
откуда там a?
Давай бэктрекнемся - я асинки запускаю, но если они начинают в какой-то момент работать дольше определенного предела, меня перестает интересовать их возвращаемое значение и я хочу чтобы они прекратили делать то что они делают и отдали ресурсы. Они через TVar a мне какой-то a возвращают в stm.

Leonid
28.03.2018
13:48:29
http://hackage.haskell.org/package/half-0.2.2.3/docs/Numeric-Half.html

Alexander
28.03.2018
13:49:05
@catamorphism вот не слушал ты меня когда я на fprog spb рассказывал это (или я тогда про исключения чушь нёс)?
а они работают или ждут?

Denis
28.03.2018
13:49:44
они работают и мне надо чтобы CPU отдали и память

Alexander
28.03.2018
13:50:07
как прибить сходу чет не вижу, как неслушать через registerDelay можно

Yuriy
28.03.2018
13:50:14

Leonid
28.03.2018
13:50:52
ну там storable есть как минимум

Alexander
28.03.2018
13:52:41
always :: STM Bool -> STM () <- такая штука в stm была, но похоже её хотят выкинуть
плюс в статье писали что раннее завершение возможно, но вроде не сделано
т.е. killThread придётся кидать явно

Denis
28.03.2018
13:53:16
ну я так и думал делать
вообще задачник бы по конкарренси в ghc

Google

Denis
28.03.2018
13:53:44
я б порешал

Alexander
28.03.2018
13:53:46
вообще на threadDelay, registerDelay надеяться почи всегда можно
+
т.е. проблемы там будут только в патологических случаях
у registerDelay меньше с исключениями проблем, т.к. там все в stm
я бы делал registerDelay + запасной тред
в одном из них atomically $ readTVar d >>= check) >> killThread
в другом что надо но проверяя readTVar d >>= always

Denis
28.03.2018
13:57:17
Хм, ну т.е. в каждом асинке по два ТВара, один из них для отсечки + Отдельный тред делающий по отсечке killThread
я вообще думал по другому

Yuuri
28.03.2018
13:58:52

Denis
28.03.2018
13:59:09
STM вообще убрать, т.к. retry не нужен тут. Отдельный тред в котором threadDelay и он все остальные просто килляет.

Alexander
28.03.2018
13:59:19
одного твара должно хватить

Denis
28.03.2018
13:59:29

Alexander
28.03.2018
13:59:32
retry - блокировка

Yuuri
28.03.2018
13:59:45
Что-то он не хуглится

Alexander
28.03.2018
14:00:06
threadDelay x = registerDelay x >>=\t -> atomically (readTVar t>>= check)
но ты ещё к этому доп логику композить можешь
вообще есть timeout где-то в base

Denis
28.03.2018
14:00:35
удобен для обращения к рекордам в ООП стиле (то что в PureScript через точку делается)

Google

Alexander
28.03.2018
14:00:36
который IO a -> IO (Maybe a)
но там есть проблемы с исключениями

Denis
28.03.2018
14:00:49
во, кстати

Vladimir
28.03.2018
14:00:50

Denis
28.03.2018
14:00:53
совсем забыл про него

Alexander
28.03.2018
14:01:02
т.е. лучше делать это в секретном треде
в который ничего не прилетит

Yuuri
28.03.2018
14:02:36

Vladimir
28.03.2018
14:04:46

kana
28.03.2018
14:34:09
как-то можно проверить значение на явный error?
понятно, что x = x не выявить, но x = error "" же как-то можно выявить

? animufag ?
28.03.2018
14:36:54
=== undefined

kana
28.03.2018
14:37:33
это же не жиес

Alexander
28.03.2018
14:38:12
никак
ну можно попробовать вычислить evaluate и ловить исключения
может каким-то чудом можно попробовать понять по адресу что там за символ

Denis
28.03.2018
14:40:21
скорее так

Alexander
28.03.2018
14:40:25
но это ты только error словишь максимум, а ещё есть всякие throw

Denis
28.03.2018
14:40:56
но вообще это задача из серии тех, которые в коде здорового человека не требуют решения
хочется очень странного, короче