Size: a a a

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

2020 August 08

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
определяешь .equals для своего типа, и = работает как нужно
ну и hashCode ещё
источник

Г

Григорий in Clojure — русскоговорящее сообщество
Это нормальная практика в clj?
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Григорий
А  в коде как это выглядит?
например, так
(deftype CacheKey [k args]
 Object
 (hashCode [_]
   (if (some? k) (.hashCode k), 0))
 (equals [this obj]
   (or (identical? this obj)
       (and (instance? CacheKey obj)
            (= k (.-k ^CacheKey obj))))))
источник

Г

Григорий in Clojure — русскоговорящее сообщество
Спс。
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Григорий
Это нормальная практика в clj?
думаю, что да
(defn =
 "Equality. Returns true if x equals y, false if not. Same as
 Java x.equals(y) except it also works for nil, and compares
 numbers and collections in a type-independent manner.  Clojure's immutable data
 structures define equals() (and thus =) as a value, not an identity,
 comparison."
источник

E

ETL in Clojure — русскоговорящее сообщество
Григорий
Всем привет! Такой вопрос: можно ли в clojure написать свой Eq, как в Haskell'е? Для некоторого типа переопределить оператор "=" по-своему. Точнее говоря я работаю в диапазонами и адресами Excel'я. И хочу задефайнить тип CellAdress (вообще он уже есть в java-библиотеке, так что расширить), чтобы мой код "знал", что {:row 1 :collumn2} и "B1" это одно и то же.
Есть компараторы - функция compare, про это хорошо в книге у Эмерика расписано.
На самом деле, вспоминая прошлый твой вопрос про протоколы и текущий про Eq, могу сказать, что как человек тоже пришедший в Clojure из Haskell - тащить в Clojure идиоматику Haskell так себе затея. У них общего буквально то, что это функциональные языки. На Clojure лучше всего писать как на Clojure )
Нет никакой практической необходимости рождать тип (а на самом деле не тип, а java класс) через протокол под каждую операцию, лишь на том основании, что так принято в Haskell (исключительно из-за строгой типизации).
"What has been in Haskell should be left behind. It’s Clojure time!" (c) @igrishaev
источник
2020 August 09

A

Alexander in Clojure — русскоговорящее сообщество
when in Rome, do as the Romans do
источник

Г

Григорий in Clojure — русскоговорящее сообщество
ETL
Есть компараторы - функция compare, про это хорошо в книге у Эмерика расписано.
На самом деле, вспоминая прошлый твой вопрос про протоколы и текущий про Eq, могу сказать, что как человек тоже пришедший в Clojure из Haskell - тащить в Clojure идиоматику Haskell так себе затея. У них общего буквально то, что это функциональные языки. На Clojure лучше всего писать как на Clojure )
Нет никакой практической необходимости рождать тип (а на самом деле не тип, а java класс) через протокол под каждую операцию, лишь на том основании, что так принято в Haskell (исключительно из-за строгой типизации).
"What has been in Haskell should be left behind. It’s Clojure time!" (c) @igrishaev
Я понимаю. Но пока что развить качественных кложуристых паттернов мышления у меня не вышло. Поэтому и спрашиваю: это нормальный подход в ней.
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
уважаемые, а нет ли у кого-нибудь готового макросика, который бы
считывал собирал в один ресурс только используемые svg/xml файлы, чтобы потом их использовать в каком-нибудь реагенте?
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
еслм более понятно, то чтобы я пишу
(svg-icon :right-arrow)
и оно при этом ищет файл с таким именем, грузит оттуда свг в одну большую мапу, которую сохраняет в ресурсы, а сам вызов заменяет на
(get my-resource-icon-map :right-arrow)
источник

DK

Denis Krivosheev in Clojure — русскоговорящее сообщество
Maxim Penzin
еслм более понятно, то чтобы я пишу
(svg-icon :right-arrow)
и оно при этом ищет файл с таким именем, грузит оттуда свг в одну большую мапу, которую сохраняет в ресурсы, а сам вызов заменяет на
(get my-resource-icon-map :right-arrow)
Это же может быть просто функция у которой в контексте глобальная переменная
источник

GP

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

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
Denis Krivosheev
Это же может быть просто функция у которой в контексте глобальная переменная
вопрос, что в этой глобальной переменной, например, хочется чтобы в нее сбандлились только нужные иконки, а не всё
источник

DK

Denis Krivosheev in Clojure — русскоговорящее сообщество
Maxim Penzin
вопрос, что в этой глобальной переменной, например, хочется чтобы в нее сбандлились только нужные иконки, а не всё
Она может быть атомом... ну в общем надо смотреть задачу конкретнее
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
ага, вот что-то подобное, только надо будет еще приделать, чтобы (def icons оно саом делало
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
Denis Krivosheev
Она может быть атомом... ну в общем надо смотреть задачу конкретнее
конкретнее так - вот у меня есть 100500 разных свгшек всех видов, но я не хочу тащить их все в бандл, когда используется оттуда лишь пара десятков, например.
источник

DK

Denis Krivosheev in Clojure — русскоговорящее сообщество
Maxim Penzin
конкретнее так - вот у меня есть 100500 разных свгшек всех видов, но я не хочу тащить их все в бандл, когда используется оттуда лишь пара десятков, например.
Можно попробовать каждую из них в отдельную переменную и понадеяться на Гугл кложур компайлер для три шейкинга
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
если на этапе компиляции у меня некий макросик распарсит свгешки и сложит рядом в ресурс, то потом достаточно будет просто подгрузить его.
я понимаю, что это в какой-то мере переизобретение вебпака, но в кложускратпи.
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
Denis Krivosheev
Можно попробовать каждую из них в отдельную переменную и понадеяться на Гугл кложур компайлер для три шейкинга
возможно тоже вариант, надо попробовать.
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
с другой стороны как-то не хочется ресурс бандлер на компайлер перекладывать
источник