Fork me on GitHub
#clojure-russia
<
2017-02-02
>
maxim01:02:19

Я пропустил или результаты clojure survey еще не опубликовали?

mike_ananev04:02:22

@mkaschenko не. не опубликовали еще. Алекс Миллер вчера вечером говорил, что будет вот вот, что типа народ был занят

kronos_vano09:02:21

Как в схеме делать значения по умолчанию для ключей? Прям чот не могу додуматься/нагуглить

kgofhedgehogs11:02:54

Мне почему-то кажется, что он говорит о hash-map в языке scheme...

kgofhedgehogs11:02:24

> груп-бай заманчивый, но там прийдется вычищать значения после группировки > walk_values Мне кажется, что то, что у меня делается в цикле, можно сделать одним group_by. Потому что в цикле я как раз группирую значения из world по результатам neighborhood...

misha11:02:37

лучше уже тогда редюсом в один проход

kgofhedgehogs11:02:12

А исходник групбая это то, что у меня в изначальном примере

kgofhedgehogs11:02:22

@misha покажи пример

misha11:02:08

ну ты про питоний групбай, а я про этот:

misha11:02:24

(defn group-by
  "Returns a map of the elements of coll keyed by the result of
  f on each element. The value at each key will be a vector of the
  corresponding elements, in the order they appeared in coll."
  [f coll]
  (persistent!
    (reduce
      (fn [ret x]
        (let [k (f x)]
          (assoc! ret k (conj (get ret k []) x))))
      (transient {}) coll)))

misha11:02:47

который на редюсе и транзиенте уже оказывается )

kgofhedgehogs11:02:51

Можно быстро как-то исходники смотреть?

misha11:02:01

cmd+click kappa

kgofhedgehogs11:02:59

Гы, серьезно, работает!

kgofhedgehogs11:02:22

А тут куда не тыкни всё на редьюсе и транзиенте

kgofhedgehogs11:02:00

А frequencies это не (partial group-by count)?

kgofhedgehogs11:02:18

А. Это наоборот развернуто

misha11:02:20

не думаю, что "наоборот"

kgofhedgehogs11:02:59

Это нифига не наоборот

kgofhedgehogs13:02:37

Код нормально отформатирован? Мне не понятно куда запихнуть pairs, который второй аргумент as->

artemyarulin13:02:19

я б вынес наружу вообще for в виде функции, тогда все будет ня (as-> (magic-f world) pairs … …)

kgofhedgehogs13:02:14

Согласен. Ща орагнизую

dottedmag13:02:25

Мне одному кажется, что питоний вариант был более читабелен?

artemyarulin13:02:29

хотя я б много чего вынес ибо один такой конвеер понимается тяжело

misha13:02:39

слишком много скобочек kappa

artemyarulin13:02:49

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

artemyarulin13:02:53

а через reduce loop/recur не проще будет? Или тут уже предлагали?

artemyarulin13:02:46

2 года занимаюсь с кложурой, первый раз вижу чтоб кто-то as-> заюзал 🙂

misha13:02:12

что ты всё картинками-то

kgofhedgehogs13:02:47

> что ты всё картинками-то Не привык. Сорри 2 дня пользуюсь слакой

kgofhedgehogs13:02:18

>первый раз вижу чтоб кто-то as-> заюзал 2 дня учусь писать на clojure, выходит как выходит 🙂

artemyarulin13:02:57

нене, это не наезд, просто к слову

kgofhedgehogs13:02:00

Ведь название функции должно описывать, что она сделает в результате для использующего, а не то, что её действия значит для неё?

artemyarulin13:02:38

>а не то, что её значит для функции? not-sure-fry

kgofhedgehogs13:02:44

поправил)

artemyarulin13:02:04

>а не то, что её действия значит для неё? not-sure-fry

kgofhedgehogs13:02:28

Ну на примере: Я пишу Сonway's game of life Мне надо найти соседей ячейки. Вместо того, чтобы генерировать moore-neighborhood для ячейки и опрашивать игровое поле на существование ячеек из полученного moore-neighborhood, я генерирую moore-neighborhood для всех ячеек, и собираю все их пересечения

kgofhedgehogs13:02:06

Т.е. вместо того, чтобы искать соседей ячейки, я ищу ячейку среди соседей другой ячейки

kgofhedgehogs13:02:15

пффффррсрмрмр... Как-то так

kgofhedgehogs13:02:05

Но в результате получается что надо. Если вам интересно зачем так, то я уже не помню, почему я начал делать так. Но два дня назад у меня было обоснованное мнение.

artemyarulin14:02:39

да вроде тож самое что и было

artemyarulin14:02:26

я вроде спрашивал - ты не пробовал через простой reduce или loop/recur сделать?

kgofhedgehogs14:02:32

Неа. Не пробовал. Нет идей как

artemyarulin14:02:41

ну тогда ок, пуш в мастер 🙂

a.espolov14:02:48

@artemyarulin в твой мастер пушить?

artemyarulin14:02:47

я не даю незнакомцам пушить в мой мастер troll

ul15:02:04

я с вопросом, который наверняка всплывает время от времени 😃 приведите, пожалуйста, примеры сложных проектов на Clojure и ClojureScript, которые работают в продакшене

ul15:02:29

не обязательно open source, главное, чтобы пальцем можно было тыкнуть в работающую систему

ul15:02:50

списки компаний на http://clojure.org / http://clojurescript.org не выдают сами системы =(

rkosenko16:02:30

datomic... работает в продакшене у таких чуваков: http://www.datomic.com/customers.html

kishanov16:02:19

весь фронт-энд для нашего основного приложения (Apstra Operating System) - одно среднее ClojureScript/re-frame приложение, 30К строк кложурскрипта, можно посмотреть тут https://youtu.be/Z1PzrC5DmmQ?t=12m

dottedmag16:02:48

@ul LightTable, например

dottedmag16:02:03

Да, на гитхабе одни библиотеки 🙂

dottedmag16:02:53

@ul Ну и http://riemann.io/ есть, чтобы было, что показать 🙂

rmuslimov17:02:55

в walmart процессинг работает на clj

mike_ananev18:02:54

@ul тыкаешь сюда https://precursorapp.com и прямо в кложу упираешься сходу. проект написан на ClojureScript и недавно стал опенсорсом

mike_ananev18:02:21

там еще и датомик в исходниках маячит

ul18:02:00

ребята, спасибо

ul18:02:12

буду двигать clj(s) в массы

ul18:02:26

а массы жутко хотят видеть success stories )

ul18:02:13

зодно соберу всё это в одном месте, буду пополнять потихоньку

mike_ananev18:02:54

@ul вот боинг еще

kgofhedgehogs20:02:22

На скрине 6 кадров анимации: чередуются линия из трех пикселей и столбик из трех пикселей

dottedmag20:02:30

@kgofhedgehogs HTML+CSS чем угодно. А если GUI, то https://github.com/daveray/seesaw

kgofhedgehogs20:02:46

Спасибо. Если html+css то у меня тоже должен быть опыт работы с этим, верно понимаю? Или там все просто, что за 10 минут разберусь?

dottedmag20:02:04

Нууу... HTML+CSS нужно разбираться с бутылкой виски 🙂

dottedmag20:02:51

Но это же типа просто, туториалов хоть завались. А cljs - это react, т.е. reagent, om, quiescent или rum.

kgofhedgehogs20:02:39

> виски или rum Тогда лучше посмотрю seesaw

dottedmag20:02:45

seesaw - это враппер над джавовым Swing. Если хочется в браузере, то лучше взять обёртку над react.

rmuslimov20:02:28

http://quil.info/ наверное, если уже рисовать пора

kgofhedgehogs20:02:47

Я вообще не знаю, что мне хочется. Где бы вы лучше рисовали conway's game of life с клетками разных цветов, которые смешиваются при рождении новой клетки?

kgofhedgehogs20:02:00

Не судите строго, я не дизайнер

andre21:02:15

было?

andmed21:02:00

они оба за жаву, что ли?

andmed21:02:13

а кому в container-based distributed systems ООП и design patterns не хватает? 🙂 https://research.google.com/pubs/archive/45406.pdf

kishanov21:02:27

обычно когда не получается компактно написать проще поменять низлежащую структуру данных, чтобы ее процессить было проще

kishanov22:02:40

“придумывал элегантную структуру данных, которая удовлетворяла бы всем нуждам” - это №1 причина прокрастинации программистов на кожуре, имхо 🙂

kgofhedgehogs23:02:26

Ну по-моему получилось компактно. Это я так с непривычки тупил :)