Size: a a a

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

2019 May 02

G

Gleb in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
раз это разные объекты - это же уже не копия
да, но данные одинаковые
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
какие данные?
источник

G

Gleb in Clojure — русскоговорящее сообщество
например, :name
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
добавляешь в данные идентификатор
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
у тебя же граф как-то специфицируется
источник

G

Gleb in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
добавляешь в данные идентификатор
я думал об этом, но можно же identical? пользоваться
источник

G

Gleb in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
у тебя же граф как-то специфицируется
ну в теоретической модели айдишников нет
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
Gleb
ну в теоретической модели айдишников нет
но что-то есть?
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
ты же их как-то отличаешь друг от друга?
источник

G

Gleb in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
но что-то есть?
источник

G

Gleb in Clojure — русскоговорящее сообщество
извиняюсь, что повёрнуто
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
@glebdom4 если речь не идет об интеропе с явой, то строить какую либо логику вокруг identical и "объектов" — это почти 100% очень плохая идея
источник

VL

Vlad Lisovsky in Clojure — русскоговорящее сообщество
Gleb
Например, у меня есть вот такая функция:
(defn copy [frag]
 (if (instance? MetagraphFragment frag)
   (make-fragment (:vertices frag) (:meta-vertices frag) (:edges frag))
   (throw
    (IllegalArgumentException.
     (str "The " (get-class-name frag) " type component is not a metagraph fragment.")))))

Она создаёт копию объекта.
копия и персистентные структуры данных как бы не имеют смысла, так ведь?
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
Andrew Rudenko
@glebdom4 если речь не идет об интеропе с явой, то строить какую либо логику вокруг identical и "объектов" — это почти 100% очень плохая идея
+
источник

AS

Anatoly Smolyaninov in Clojure — русскоговорящее сообщество
В теории вершины сравниваются, как для теории неважно я думаю
источник

G

Gleb in Clojure — русскоговорящее сообщество
Andrew Rudenko
@glebdom4 если речь не идет об интеропе с явой, то строить какую либо логику вокруг identical и "объектов" — это почти 100% очень плохая идея
Ну на многих сайтиках писали, что рекорды и протоколы в данном случае - лучше всего. И типа меньше всего оверхеда будет... Я поэтому и стал такую реализацию делать.
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
@glebdom4 если твои алгоритмы пытаются использовать некие "объекты", то скорее всего тоже что-то плохо. смотри, вот у тебя есть фрагмент метаграфа, который описывается вершинами, эджами, мета вершинами и мета эджами. какой такой смысл в рамках твоего алгориттма будет играть "копия" такого фрагмента, чем отличаться от другого?
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
Gleb
Ну на многих сайтиках писали, что рекорды и протоколы в данном случае - лучше всего. И типа меньше всего оверхеда будет... Я поэтому и стал такую реализацию делать.
пара советов:
1. поменьше читать сайтиков
2. подобные оптимизации это та самая кнутовская классика. запили алгоритм — увидишь, что тормозит на... на чем оно по твоему тормозить будет, что за оверхед? на аллокациях? на копированиях?
источник

G

Gleb in Clojure — русскоговорящее сообщество
Andrew Rudenko
@glebdom4 если твои алгоритмы пытаются использовать некие "объекты", то скорее всего тоже что-то плохо. смотри, вот у тебя есть фрагмент метаграфа, который описывается вершинами, эджами, мета вершинами и мета эджами. какой такой смысл в рамках твоего алгориттма будет играть "копия" такого фрагмента, чем отличаться от другого?
Пока никакие алгоритмы не используют данную функцию.
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
но оптимизировать пытаешься
источник