@haskellru

Страница 1025 из 1551
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
там же операций мало наверное, это всякие итерационные методы превращают содержание какого-нибудь несчастного флоата в говно мгновенно

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
а они в IEEE754 вообще есть?
binary16 binary32 binary64 binary128 binary256 decimal32 decimal64 decimal128

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
http://hackage.haskell.org/package/half-0.2.2.3/docs/Numeric-Half.html
мне это не в программе нужно, а в сериализации. впрочем, это тоже должно помочь, спасибо

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

я вообще думал по другому

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

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

Denis
28.03.2018
13:59:29
Оу, а что за & такой в Prelude?
$ с флипнутыми аргументами

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
Они формат таки сломали? Было же 24, точно помню
Там Rational же, а он из Integer'ов состоит. Короче, размер нефиксированный.

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

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

в который ничего не прилетит

Vladimir
28.03.2018
14:04:46
Они формат таки сломали? Было же 24, точно помню
А, не, фигню сказал. Там не Rational, а разбивание на экспоненту и мантиссу, которые в Integer и Int представлены. Но всё равно размер плавающий.

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 и ловить исключения

может каким-то чудом можно попробовать понять по адресу что там за символ

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

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

хочется очень странного, короче

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