@haskellru

Страница 149 из 1551
Misha
15.11.2016
12:12:40
пошел читать

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

или просто некомпилируемым

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

Google
Misha
15.11.2016
12:23:09
а

а вот это интересно

просто возьмет первый попавшийся?

Anatolii
15.11.2016
12:29:46
я для каждой такой сущности создаю модуль

и там описываю сущности

мне наоборот нравится что все в одном месте

я потом через 1 модуль все эти сущности реимпорт делаю

правда насчет GHCJS - действительно не приятно будет

но я таким не занимался сезе

Misha
15.11.2016
12:30:44
ну это не совсем вопрос вкуса, это скорее вопрос того, как работать с зависимостями

Anatolii
15.11.2016
12:31:02
ну у теябю все равно все приложение зависит от этого всего

а ты игрался с GHCJS?

Google
Misha
15.11.2016
12:31:23
только начал

Anatolii
15.11.2016
12:31:41
а там есть что-то типа лайврелоада страницы?

Misha
15.11.2016
12:31:42
и только на днях заставил это добро работать с reflex

хороший вопрос

Anatolii
15.11.2016
12:31:58
ну во время разработки что-то поменял чуток

Misha
15.11.2016
12:32:04
вроде как есть, но я до этого не дошел пока

Anatolii
15.11.2016
12:32:06
и чтобы быстро результат увидеть

Misha
15.11.2016
12:32:17
да, я понял, но не знаю

Anatolii
15.11.2016
12:32:26
интересно

Misha
15.11.2016
12:32:26
подозреваю, что все плохо

или это может сделать Luite но для остальных это сильно сложно

самый облом для меня оказался, что официальный servant-client не поддерживает ghcjs

чего я собственно хотел

то есть чтобы клиент генерировал ClientM, работающий через xmlHttpRequest

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

так что там все очень сырое пока

и уж тем более live reload

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

Alexander
15.11.2016
14:58:07
просто возьмет первый попавшийся?
да причем может одновременно 2 разных, если не повезёт с инлайнами

Misha
15.11.2016
15:05:02
красиво

Google
Misha
15.11.2016
15:34:13
то есть я в общем верю, что это сделано for a reason, но это брутальщина какая-то конечно

А может кто-нибудь посмотреть вот на это http://lpaste.net/340541 и сказать, почему это плохо? Идея в том, что мы берем значение либо из кэша, либо делаем так, чтобы только первый запросивший клиент инициировал long IO action, а остальные блокировались на TMVar и ждали, пока IO action закончится, и потом все одновременно получали бы это значение. Я тут сильно подозреваю, что изобрел велосипед с додекаэдральными колесами. Есть ли какие-то хорошие библиотеки для этого?

SimpleX
18.11.2016
04:36:27
А зачем так делать?

Ты хочешь запоминать результат долгого вычисления, это называется memoization

Konstantin
18.11.2016
04:38:22
ну я так понял, что остальные треды должны ждать вычисления, а не повторять его

до мемоизации

SimpleX
18.11.2016
04:42:38
https://hackage.haskell.org/package/io-memoize-1.1.1.0/docs/System-IO-Memoize.html

Внутрь не заглядывал

eagerlyOnce как раз то, что нужно

Misha
18.11.2016
09:14:01
во! спасибо, посмотрю

код, который я выложил, оказался плохой, там возникает дедлок, если потоков больше двух. Интересно было бы понять, почему, но лучше взять библиотечную функцию

хотя судя по исходникам, это не совсем то

Misha
18.11.2016
11:16:25
В конечном счете сделал через Async, там никаких дедлоков не возникает http://lpaste.net/340541

Alexander
18.11.2016
14:45:02
нету гарантии что только 1 раз запустится тред

нету гарантии, что не перепишется, то, Value на Promise

хотя почему там deadlock сходу не вижу

ну и там MVar было бы проще

Misha
18.11.2016
14:51:04
да, между проверкой и writeTVar есть окно, когда другие могут влезть и запустить

Alexander
18.11.2016
14:51:28
хотя Value на Promise я загнул

Google
Misha
18.11.2016
14:51:51
переход от Empty -> Promise неатомарный

тут как ни крутись

Alexander
18.11.2016
14:51:58
угу

тут если использовать то MVar

т.к. там IO можно запустить

Misha
18.11.2016
14:52:19
надо Mvar попробовать

да

по идее Async должен взять на себя все случаю с exceptions и должно получиться без всякой страшной лапши с catch/finally

Admin
ERROR: S client not available

Alexander
18.11.2016
14:53:35
join $ modifyMVar (\case Empty -> do { async »= \x -> return (Promise x, wait x) } ; Promise w -> return (Promise w; wait w); }

Value кстати не нужно Async его уже содержит

Misha
18.11.2016
14:58:29
о!

лихо

буду осмыслять

спасибо

Alexander
18.11.2016
16:42:34
Еще можно unsafePerformIO foo

Если NOINLINE сделать

Но лучше так не делать

Misha
18.11.2016
16:43:07
о нет

для меня это имеет еще и некоторый педагогический смысл

Google
Misha
18.11.2016
16:43:57
поэтому лучше сделать "правильно", а не прогнуть систему под себя

Anatolii
18.11.2016
16:46:59
Наверное лучше все что содержит unsafe лучше не делать

Ruslan
18.11.2016
21:46:33
Привет всем. Когда-то установил себе haskell-stack, немного поигрался, месяц не трогал, думал начать проект, стал делать, и теперь постоянно выдает такую ошибку в линковщике(здесь про gcc, но у меня такая же с ghc). Может, кто сталкивался? http://stackoverflow.com/questions/1521859/nonrepresentable-section-on-output-error-during-linking-on-linux Сделано: - переустановил stack - удалил ~/.stack

Alexander
18.11.2016
21:56:22
Debian?

Ruslan
19.11.2016
03:13:33
Да, sid

Alexander
19.11.2016
05:17:50
Используй cabal master

Стек не пофиксили еще вроде

В дебиане уже слишком новый gcc еще и с -fPIE если не ошибаюсь

Ruslan
19.11.2016
05:58:14
Блин, точно. Я ж обновился на полтора гига неделю назад

Спасибо!

Судзумия
19.11.2016
10:08:58
В ДЕБИАНЕ СЛИШКОМ НОВЫЙ ГЦЦ

Sergey
19.11.2016
10:13:16
В дебиане уже слишком новый gcc еще и с -fPIE если не ошибаюсь
Что? Поделил на ноль. Вот так неожиданность

Alexander
19.11.2016
10:14:29
Он с дурацкими опциями еще собран

Ну как для ghc дурацкими

Судзумия
19.11.2016
10:15:43
А в арче, наверное, слишком старый gcc ?

Sergey
19.11.2016
10:17:49
> В дебиане уже слишком новый gcc еще и с -fPIE > с -fPIE > 2017 ну наконец то хоть в серверном линуксе стали интересоваться безопасностью

Alexander
19.11.2016
10:30:50
ну PIE было всегда

https://ghc.haskell.org/trac/ghc/ticket/12759

Там еще пара багов прилинковано

Aldar
21.11.2016
05:19:17
http://colah.github.io/posts/2015-09-NN-Types-FP/

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