Size: a a a

Clojure — русскоговорящее сообщество

2021 January 26

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
Mikhail Borisov
У вас обоих случилось "в интернете кто-то неправ". Только проблема была в том, что каждый в голове для себя решил, что такое "быстро" и что такое "медленно" и начал с усердием это доказывать)
Э? Да не было такого) я всего лишь хотел понять откуда корни тезиса "в кложуре медленная работа с коллекциями")
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
видимо здесь, cognitect и clojure в одном флаконе
https://clojure.org/privacy
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Kirill Chernyshov
Э? Да не было такого) я всего лишь хотел понять откуда корни тезиса "в кложуре медленная работа с коллекциями")
"Строгое" утверждение:

Напихать элементов в ArrayList быстрее, чем в PersistentVector.

Верное. Примерно на этом и весь спор построен :)
источник

MN

Maksim N in Clojure — русскоговорящее сообщество
Anton Karpov
Ну и на канве такой замечательной дискуссии можно ощутить желание спросить  - есть ли где то сейчас проекты по созданию common purpose typed lisp language? Этакая clojure с типами
Без типизации, но один из контрибьюторов в Clojure делает ClojureDart, в котором будет компиляция в нативный код с интеропом в дарт
источник

MN

Maksim N in Clojure — русскоговорящее сообщество
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
Кстати а есть тут кто на дарт пишет?
источник

MN

Maksim N in Clojure — русскоговорящее сообщество
источник

ND

Nikita Domnickij in Clojure — русскоговорящее сообщество
Kirill Chernyshov
Кстати а есть тут кто на дарт пишет?
Писал
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
Anton Karpov
Спасибо.
Просто Рич, как по мне совершил какое то чудо. Вышел, презентовал.  Причем так или иначе clojure это сейчас язык о котором знает фактический каждый разработчик в мире.
Вот бы какая корпорация условный Carp взяла "под крыло" и форсила бы его.
когда корпорация поддерживает язык, получается го - язык, ориентированный на самого ущербного верблюда в караване.
мне кажется, мы тут в этом чате присутствуем по критерию заинтересованности в обратном.
источник

AK

Anton Karpov in Clojure — русскоговорящее сообщество
Ну ведь есть и обратные примеры, по идее, нельзя же сказать что go единственный пример) TypeScrip если я правильно понимаю должен подойти в качестве примера.
Ну хорошо, пусть не корпорация, а набор организаций в едином порыве желающих использовать\делать\развивать подобный язык
источник

AC

Alexey Cheremisin in Clojure — русскоговорящее сообщество
есть пару вопросов по атомам, если я посажу на один атом кучу ватчеров, которые пишут в разные сокеты (веб-сокеты), мне внутри ватчара нужно какую шибудь асинхронщину делать? типа отдельный тред запускать?
источник

AC

Alexey Cheremisin in Clojure — русскоговорящее сообщество
другими словами  -мне нужно реализовать систему pub-sub  на кучу сабскрайберов
источник

KR

Kostyantin Randomnam... in Clojure — русскоговорящее сообщество
может там не атом нужен?
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Похоже на agent
источник

AC

Alexey Cheremisin in Clojure — русскоговорящее сообщество
мне нужно из потока сообщений в вотчерах доставать нужное для каждого сабскрайбера
источник

AC

Alexey Cheremisin in Clojure — русскоговорящее сообщество
чем агенты лучше?
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Alexey Cheremisin
есть пару вопросов по атомам, если я посажу на один атом кучу ватчеров, которые пишут в разные сокеты (веб-сокеты), мне внутри ватчара нужно какую шибудь асинхронщину делать? типа отдельный тред запускать?
судя по коду — да
    public void notifyWatches(Object oldval, Object newval) {
       IPersistentMap ws = this.watches;
       if (ws.count() > 0) {
           for(ISeq s = ws.seq(); s != null; s = s.next()) {
               Entry e = (Entry)s.first();
               IFn fn = (IFn)e.getValue();
               if (fn != null) {
                   fn.invoke(e.getKey(), this, oldval, newval);
               }
           }
       }

   }
источник

AC

Alexey Cheremisin in Clojure — русскоговорящее сообщество
Sergey Trofimov
судя по коду — да
    public void notifyWatches(Object oldval, Object newval) {
       IPersistentMap ws = this.watches;
       if (ws.count() > 0) {
           for(ISeq s = ws.seq(); s != null; s = s.next()) {
               Entry e = (Entry)s.first();
               IFn fn = (IFn)e.getValue();
               if (fn != null) {
                   fn.invoke(e.getKey(), this, oldval, newval);
               }
           }
       }

   }
Ага, спасибо! точно нужно!
А что с агентами?
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Я правильно понял, что нужно реализовать pub часть?
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
судя по коду — да
    public void notifyWatches(Object oldval, Object newval) {
       IPersistentMap ws = this.watches;
       if (ws.count() > 0) {
           for(ISeq s = ws.seq(); s != null; s = s.next()) {
               Entry e = (Entry)s.first();
               IFn fn = (IFn)e.getValue();
               if (fn != null) {
                   fn.invoke(e.getKey(), this, oldval, newval);
               }
           }
       }

   }
в документации тоже написано «The watch fn will be called synchronously, on the agent's thread if an agent, before any pending sends if agent or ref.»
источник