Size: a a a

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

2020 February 16

ВП

Владислав Петров in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
Я не думаю что тут нужна проверка на count, достаточно после дестракта проверить y
почему? А если массив на входе пустой или там 1 элемент?
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
Владислав Петров
почему? А если массив на входе пустой или там 1 элемент?
Y будет nil
источник

DG

Dmitry Getmantsov in Clojure — русскоговорящее сообщество
Владислав Петров
Коллеги, приветствую. Я новичок в кложе. Написал функцию для решения одной задачки. Нужен взгляд со стороны.
Как ее написать проще и короче.
https://gist.github.com/Hateman31/87ddf1c0290e4aa73e5a8376a8494070
возможно ты захочешь писать так
(defn new-row [x & xs ] … )

🙂
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
Ну и вообще, чаще всего обращение к структуре по номерам элементов говорит про неправильную архитектуру
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
Владислав Петров
Мерси! Пойду читать про == и into)
Но мне кажется, что мой алгоритм не самый оптимальный и много чтений происходит.
А про оптимизацию будешь думать потом, если надо
источник

ВП

Владислав Петров in Clojure — русскоговорящее сообщество
Dmitry Getmantsov
возможно ты захочешь писать так
(defn new-row [x & xs ] … )

🙂
эм... а как оно работает при пустом массиве?
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
Владислав Петров
эм... а как оно работает при пустом массиве?
Отлично
источник

DL

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

ВП

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

ВП

Владислав Петров in Clojure — русскоговорящее сообщество
Спасибо за хинты
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
Владислав Петров
Спасибо за хинты
Короче, почитай доку про деструктуризацию и юзай ее всегда
источник

ВП

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

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
Никаких subvec, first, last, rest, nth
источник

DL

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

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Владислав Петров
Коллеги, приветствую. Я новичок в кложе. Написал функцию для решения одной задачки. Нужен взгляд со стороны.
Как ее написать проще и короче.
https://gist.github.com/Hateman31/87ddf1c0290e4aa73e5a8376a8494070
(defn new-row [row]
 (let [[x & [y & xs :as ys]] row]
   (cond
     (nil? y) row
     (== x y) (into [(* 2 x)] (new-row xs))
     :else (into [x] (new-row ys)))))
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
(defn new-row [row]
 (let [[x & [y & xs :as ys]] row]
   (cond
     (nil? y) row
     (== x y) (into [(* 2 x)] (new-row xs))
     :else (into [x] (new-row ys)))))
но не сказал бы, что это очень понятно получилось
источник

ВП

Владислав Петров in Clojure — русскоговорящее сообщество
Sergey Trofimov
(defn new-row [row]
 (let [[x & [y & xs :as ys]] row]
   (cond
     (nil? y) row
     (== x y) (into [(* 2 x)] (new-row xs))
     :else (into [x] (new-row ys)))))
Воооу! Ахренительно
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Владислав Петров
Воооу! Ахренительно
то же самое, но с recur

(defn new-row [row]
 (let [[x & [y & xs :as ys]] row]
   (cond
     (nil? y) row
     (== x y) (into [(* 2 x)] (recur xs))
     :else (into [x] (recur ys)))))
источник

ВП

Владислав Петров in Clojure — русскоговорящее сообщество
Класс! Будет теперь чем занять себя на неделю)))
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
то же самое, но с recur

(defn new-row [row]
 (let [[x & [y & xs :as ys]] row]
   (cond
     (nil? y) row
     (== x y) (into [(* 2 x)] (recur xs))
     :else (into [x] (recur ys)))))
сорри, с recur нерабочее
источник