@haskellru

Страница 261 из 1551
Nikita
16.05.2017
19:46:42
редко где такое встречается

Max
16.05.2017
19:47:47
Ну и просто весело
ну не весело, но просто помогает

я и с ерланга на еликсир сбежал, когда на питоне пописал прилично

понял, что на ерланге не жизнь

Google
Max
16.05.2017
19:48:22
Фи, перебежчик

Питон тебя покусал

Max
16.05.2017
19:49:16
на х-е давно не писал, кстати

надо бы ещё чёнить наваять

Alexander
16.05.2017
19:50:18
Ну я использую. serokell.io
кардано запустили?

=)

Arseniy
16.05.2017
19:57:59
Тестнет уже во всю бегает :)

Alexander
16.05.2017
19:59:27
вы вообще нехорошие люди, с WT сотрудничаете, с FPC сотрудничаете, а чего с нами не сотрудничаете?

=)

Max
16.05.2017
19:59:32
что такое serokell.io?

Alexander
16.05.2017
19:59:42
рабочие руки IO HK

https://iohk.io/

хм.. чего-то у меня мегамодный сайт этот не работает сегодня

Google
Misha
16.05.2017
20:00:40
как интересно, как послушаешь, так у хаскелистов больше компаний, чем людей

Max
16.05.2017
20:01:01
ну так один х-ст может работать в нескольких компаниях

eugene
16.05.2017
20:01:10
хм.. чего-то у меня мегамодный сайт этот не работает сегодня
Когда я его открываю, то начинают кулеры шуметь :(

Alexander
16.05.2017
20:01:29
ладно со второй попытки заработал

Max
16.05.2017
20:01:44
Когда я его открываю, то начинают кулеры шуметь :(
это х-ь в жаваскрипт компилится прямо у тебя

Alexander
16.05.2017
20:02:02
но наверное люди отуда расскажут, кто такие serokell.io и hkio лучше меня, так что я помолчу

eugene
16.05.2017
20:02:03
Alexander
16.05.2017
20:03:32
или и то и другое

@jagajaga на самом деле если подробнее расскажете то будет всяко интереснее

Alexander
16.05.2017
20:09:25
Что интересует? :)
ну вот людям тут было интересно кто вы, я вроде как в курсе более-менее

Arseniy
16.05.2017
20:11:54
tweag I/o
Пока нет необходимости к сотрудничеству, но буду знать! Огромное спасибо за информацию, не слышал о вас :)

Alexander
16.05.2017
20:13:31
можете о нас у Дункана спросить, он нас немного знает

: )

Arseniy
16.05.2017
20:15:36
Serokell -- аутсорсиноговая компания, пишем на хаскеле (и related вещах, например purescript), используем nix и nixos, применяем магию. На данный момент тесно дружим с IOHK, вместе разрабатываем криптовалюты и всякие исследования делаем.

? animufag ?
16.05.2017
20:18:54
кроме суперлаконичного сайта есть что-нибудь?

Google
? animufag ?
16.05.2017
20:19:18
общественная дейтельность. открытые либы, выступления, статьи

Arseniy
16.05.2017
20:19:46
github.com/input-output-hk/cardano-sl весь код наш, например

Посколько мы на аутсорсе работаем, то у нас в github.com/serokell мало всего

? animufag ?
16.05.2017
20:24:48
о, ну хотя бы на прелюд можно посмотреть

Arseniy
16.05.2017
20:25:04
Кстати, мы ищем разработчиков! :) Пишите в личные сообщения, если интересно.

Alexander
16.05.2017
20:27:25
вот обращайтесь к нам будут разработчики :D

Kit
16.05.2017
20:27:57
https://t.me/haskelljob

а что вы в этом чатике не пишете?

там так уныло

Artyom
16.05.2017
20:28:30
аутсорс аутсорса? IOHK будут довольны :troll:

Kit
16.05.2017
20:28:32
давайте использовать по назначению

Alexander
16.05.2017
20:30:19
дешевле, чем FPC выйдет, насколько я знаю, и не хуже ?

Arseniy
16.05.2017
20:31:55
Но у вас нету кипы у директора, наверное!

Alexander
16.05.2017
20:32:23
пинайте через Дункана, он может сказать хорошее слово

наверное, во всяком случае год назад бы точно сказал

Arseniy
16.05.2017
20:33:06
Пока нет необходимости к сотрудничеству, но буду знать! Огромное спасибо за информацию, не слышал о вас :)

Misha
16.05.2017
21:54:55
а кто знает как сделать такой async ioAction, чтобы ioAction запускался лениво только тогда, когда был вызван wait?

Artyom
16.05.2017
21:55:16
unsafeInterleaveIO не работает?

Misha
16.05.2017
21:55:37
не пробовал, но это какой-то хардкор сразу

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

Google
Misha
16.05.2017
21:57:03
надо еще думать

Alexander
16.05.2017
22:02:49
можно сделать так что действие запустится когда твой s используют: let ~s = unsafePerformIO $ async $ ...

тогда как только кто-то зафорсит s

то действие запустится

unsafeInterleaveIO все же другую семантику по сравнению с async имеет

если с wait одного треда они не различимы

то уже с wait из разных или ожидании через STM разница будет

Misha
16.05.2017
22:09:07
в целом задача вот такая: newtype Pr a = Pr (IO (Async a)) getOrCreateP :: TM.Map k (Pr a) -> k -> (k -> IO a) -> STM (Pr a) getOrCreateP prs k fromIO = TM.lookup k prs >>= \case Nothing -> do let pr = Pr (async (fromIO k)) TM.insert pr k prs return pr Just pr -> return pr то есть идея в том, чтобы по ключу k на каждый запрос создавать ровно один promise, на который мы потом по выходу из транзакции сделаем wait. Но штука в том, что я вижу дофига запущенных fromIO на каждый ключ

то есть либо я что-то фундаментально не так думаю

либо фиг знает

TM - это мап из smt-containers

получается, с одной стороны понятно, что async (fromIO k) может вызываться на каждый рестарт транзакции и это нормально, но выполняться-то он не должен вообще никак

в общем, буду трейсом смотреть, что там происходит

Alexander
16.05.2017
22:19:52
эм у тебя ж лежит IO действие в контецнере

и каждый кто его вызывает создаёт новый тред

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

у меня есть тип: data F = Starting (STM a)| Value a| Stopping (STM ())

запись в Мапу регистрирует тебя и ты потом делаешь IO действие и кладешь ответ, другие ждут

и.е. Nothing -> Starting -> Value

первый тред меняет Nothing на Starting и ему возвращается действие которое он должен выполнить когда создаёт переменную (вызовет async у тебя)

Google
Alexander
16.05.2017
22:23:53
другие треды если поищут к - получат срартинг

и просто вызовут atomically $ action

stopping тут не ыажно

ну и про исключения смотреть надо, т.к. тут хитро

с другой стороны треды если видят стартинг могут просто retry сделать - этого достаточно будет

и.е. ещё раз, есть Map (Maybe (Either () a))

a=Async x

тред делает lookup >>= \case {Nothing -> write Just (Left ()) return Nothing; Just Left{} -> retry ; Just Right{x} -> return Just x}

и maybe (async >>= \x -> atomically update x) return на ответ

update = lookup>>= case Nothing-> write Just (Right x); Just{} -> invariantViolation

Misha ^^ как-то так, у утра могу по человечески написать

Misha
16.05.2017
22:43:32
ага, я примерно так и подумал в итоге, что надо data P a = Empty | Working (IO a), сначала класть Empty а уже после завершения транзакции вызывать async

правда все усложняется конечно

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

Alexander
16.05.2017
22:52:29
ты не запускаешь тред в транзакции

ты кладешь туда действие которое когда выполнится создаст асинк

в твоём текущем кода

Misha
16.05.2017
22:53:35
тогда он должен быть только один на каждый ключ

Alexander
16.05.2017
22:53:39
это действие

его можно выполниьь

хоть одно оно хоть 5 каждый запуск создаст новый async

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