Size: a a a

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

2019 September 03

MG

Mikhail Gusarov in Clojure — русскоговорящее сообщество
Так вот же баг открыт на jdk, выше.
источник

MG

Mikhail Gusarov in Clojure — русскоговорящее сообщество
Не закрыли, как invalid. Просто руки не дошли сделать.
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Mikhail Gusarov
Так вот же баг открыт на jdk, выше.
где?
источник

MG

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

AC

Anton Chikin in Clojure — русскоговорящее сообщество
а
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
Anton Chikin
И в классе Pattern ни equals ни hashCode не определены
Как будто это когда то мешало ) https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/Util.java#L27
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
(Но я согласен это аргумент)
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Прикол :)
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Andrew Rudenko
В целом вопрос определения экволити конечно интересный, но я не понимаю почему в прагматичной кложе не иметь свое прагматичное понимание экволити с частичной true семантикой в частности функций
В clojure функция - это объект сгенерированного класса. А замыкания - это приватные поля.
Если 2 функции имеют одинаковый класс и одинаковые приватные поля (по =) то эти функции равны.

(defn ->f [x y]
 (fn [z]
   [x y z]))

(= (->f 1 2)
  (->f 1 2)) ;; true

(= (->f 1 (atom 2))
  (->f 1 (atom 2))) ;; false

(let [a2 (atom2)]
 (= (->f 1 a2)
    (->f 1 a2))) ;; true
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
а по реруляркам, можно попробовать сделать библиотечку, которая дает #regex «.» с плюшками вроде сравнения и реализацией IFn.
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
но там еще модификаторы есть и не очень понятно куда их положить.
#regex [«.» :some-modificator]?
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
ради интереса унаследуй класс и определи для него isEqual. С тестами и все такое.
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
так и проверим гипотезу
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
Mikhail Kuzmin
В clojure функция - это объект сгенерированного класса. А замыкания - это приватные поля.
Если 2 функции имеют одинаковый класс и одинаковые приватные поля (по =) то эти функции равны.

(defn ->f [x y]
 (fn [z]
   [x y z]))

(= (->f 1 2)
  (->f 1 2)) ;; true

(= (->f 1 (atom 2))
  (->f 1 (atom 2))) ;; false

(let [a2 (atom2)]
 (= (->f 1 a2)
    (->f 1 a2))) ;; true
мммм

(= (->f 1 2)
  (->f 1 2))
=> false
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
🙂
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Andrew Rudenko
мммм

(= (->f 1 2)
  (->f 1 2))
=> false
Я к тому, что так можно сделать, правда через рефлексию и только для jvm
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Ну или компилятор пропатчить
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Ivan Grishaev
ради интереса унаследуй класс и определи для него isEqual. С тестами и все такое.
Ты про регулярки или функции?
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
хотя бы регулярки
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
Mikhail Kuzmin
Я к тому, что так можно сделать, правда через рефлексию и только для jvm
а, ну да. я тоже к тому, что так можно сделать ) и рефлексия тут не нужна )
источник