Size: a a a

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

2020 April 19

n

ndr in Clojure — русскоговорящее сообщество
Head и next содержат референс к следующей ноде
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Что это за тип данных?
источник

n

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

(defn s-list-search [lst val]
   (loop [element @(:head lst)]
       (if (seq element)
           (if (= (:data element) val)
               (println (:data element))
               (recur @(:next element)))
           (println "nil"))))
тут сверху объявления
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
ndr
тут сверху объявления
next какого типа?
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Почему на него надо deref делать?
источник

n

ndr in Clojure — русскоговорящее сообщество
Могу привести функцию добавления элементов в лист
источник

n

ndr in Clojure — русскоговорящее сообщество
(defn slist-prepend! [lst val]
   (dosync
       (ref-set (:head lst)
       (s-list-node. (ref (deref (:head lst))) val))))
источник

AC

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

n

ndr in Clojure — русскоговорящее сообщество
вот поэтому и deref
источник

AC

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

n

ndr in Clojure — русскоговорящее сообщество
Это даже не моя функция, так что ничего с ней делать не могу
источник

n

ndr in Clojure — русскоговорящее сообщество
:(
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
(:head lst) два раза, надо деструктурить lst
источник

AC

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

AC

Anton Chikin in Clojure — русскоговорящее сообщество
seq это больше для проверки что лист не пустой
источник

n

ndr in Clojure — русскоговорящее сообщество
Это я понимаю, чтобы nullpointer не вылетал
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
ndr
Это я понимаю, чтобы nullpointer не вылетал
O_o
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Работает это так что на пустой лист (или любую другую встроенную коллекцию) seq возвращает nil что в кложе эквивалент false
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
ndr
Это я понимаю, чтобы nullpointer не вылетал
Нет
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Это чтобы проверить что коллекция пустая
источник