Size: a a a

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

2020 April 11

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
`(> (count lst) 0)` - (seq lst)
источник

n

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

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
ndr
Привет, я только начинаю изучать clojure, столкнулся с, судя по всему классической ошибкой Clojure'a (NullPointerException)
Код очень простой, в чем может быть проблема?
(def list '("hello" "world" 1))
(defn printList [lst]
   
   (if (> (count lst) 0)
       (
           (println (first lst))
           (printList (rest lst))
       )
       (println "Finish")
))
(printList list)
ты пытаешься выполнить функцию, которую возвращает (println (first lst)), ну а оно возвращает nil
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
print-list и никак иначе
цербер прям 😊
источник

n

ndr in Clojure — русскоговорящее сообщество
Так оно же должно по-идее туда даже не заходить, если лист уже пустой
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
Sergey Trofimov
цербер прям 😊
лучше я, чем на код-ревью на испытательном сроке :)
источник

n

ndr in Clojure — русскоговорящее сообщество
В итоге сработало вот так
(def list '("hello" "world" 1))
(defn print-list [lst]
   (if (seq lst)
       (do (println (first lst)
           (print-list (rest lst))))
       (println "Finish")))
(print-list list)
источник

n

ndr in Clojure — русскоговорящее сообщество
Не очень понимаю, почему этот do все исправил
источник

n

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

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
ndr
Так оно же должно по-идее туда даже не заходить, если лист уже пустой
ну он же не был пустой — '("hello" "world" 1)
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
(defn print-list [[x & xs]]
                     (if x
                       (do
                         (println x)
                         (recur xs))
                       (println "Finish")))
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
ndr
В итоге сработало вот так
(def list '("hello" "world" 1))
(defn print-list [lst]
   (if (seq lst)
       (do (println (first lst)
           (print-list (rest lst))))
       (println "Finish")))
(print-list list)
переименуй list, плз
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
ndr
Не очень понимаю, почему этот do все исправил
(f x) — call f
((println ...) x) — call result of (println ...)
источник

n

ndr in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
переименуй list, плз
во что?))
источник

n

ndr in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
(defn print-list [[x & xs]]
                     (if x
                       (do
                         (println x)
                         (recur xs))
                       (println "Finish")))
Это пока тяжеловато для понимания ахах
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
ndr
во что?))
во что угодно, чтобы не имя из core :)
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
ndr
Это пока тяжеловато для понимания ахах
[x & xs] деструктурирует список на входе на голову - x (first) и хвост (rest) - xs
источник

n

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

n

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

n

ndr in Clojure — русскоговорящее сообщество
а рекур просто вызывает функцию с аргументом xs?
источник