Size: a a a

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

2020 April 19

ИИ

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

ИИ

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

AL

Arseniy Lebedev in Clojure — русскоговорящее сообщество
Я
источник

DG

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

DG

Dmitry Getmantsov in Clojure — русскоговорящее сообщество
кто из вас садист признавайтесь
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
ndr
это single-linked list
для single linked list не нужны никаких рефы, атомы и прочие мутируемые контейнеры, в этом типа весь смысл списка в функиональщине
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
(defrecord s-list [data next])

(defn s-list-search [lst val]
 (cond
   (= val (:data lst)) (println (:data val))
   (:next lst) (recur (:next lst) val)
   :else (println "nil")))

(defn s-list-prepend [lst val]
 (->s-list val lst))
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Andrew Rudenko
для single linked list не нужны никаких рефы, атомы и прочие мутируемые контейнеры, в этом типа весь смысл списка в функиональщине
Это зависит от постановки задачи
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Классический linked list все же на ссылках
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Он и в кложе под капотом на ссылках
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Если идея в том чтобы «с нуля» его писать - то ссылки оправданы
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
Andrew Rudenko
(defrecord s-list [data next])

(defn s-list-search [lst val]
 (cond
   (= val (:data lst)) (println (:data val))
   (:next lst) (recur (:next lst) val)
   :else (println "nil")))

(defn s-list-prepend [lst val]
 (->s-list val lst))
это тоже "ссылки", только не мутируемы
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
Anton Chikin
Он и в кложе под капотом на ссылках
в кложе оно вот ровно так как у меня, только на яве, ничего там не мутируется
источник

AR

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

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
ну т.е. понятно что зачем-то можно изобрести кривой мутируемый интерфейс для singled linked list, но совершенно непонятно зачем. весь кайф этой структуры что это persistent data structure с имплементацией в несколько строк код, почему оно собственно и основная структура данных в функциональных ЯП.
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
и это в то время как тут же есть другая, очень похожая структура данных, которую без мутабельности (или ленивости) уже не заимплеменить — doubly linked list
источник
2020 April 20

D

Dos in Clojure — русскоговорящее сообщество
как можно упростить?

(if (coll? (:k x))
 (set (:k x))
 (hash-set (:k x)))
источник

ИС

Ильшат Султанов in Clojure — русскоговорящее сообщество
Dos
как можно упростить?

(if (coll? (:k x))
 (set (:k x))
 (hash-set (:k x)))
Нормальный же вариант. Можно еще чуть выше задестракчерить. Есть еще такой вариант
(->> x :k vector flatten set)
источник

D

Dos in Clojure — русскоговорящее сообщество
спасибо👍
источник

AR

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