Size: a a a

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

2020 April 11

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
потом надо будет monger.query, который уже на макросах и там, в общем все что надо есть
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
На каждый чих дергать connect тоже не очень хороша идея
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Привет. Я не уверен, что кто-то подскажет, но вдруг.
Как из

(let [x 1
     y (if (! :a)
         (! :b)
         (! :c))]
 (inc y))


сделать

(let [x 1]
 (letfn [(continue [y]
           (inc y))]
   [:a (fn [a#]
         (if a#
           [:b (fn [b#]
                 (continue b#))]
           [:c (fn [c#]
                 (continue c#))]))]))

Т.е. нужно вывернуть на изнанку функцию в тех местах, где встечается !.

Да, есть https://github.com/leonoel/cloroutine, которая компилирует код в стейт машину, но возникает проблема с дебагерами, code coverage и т.п. Они просто не работают с тем, что получится после перекомпиляции.
Вероятно, если использовать обычные функции, а не стейт машину, то дебагеры будут работать.

Есть Continuation Passing Style, когда всегда передается колбэк. Это похоже на то, что я хочу, но не совсем. Я хочу именно возвращать остаток функции, а не принимать продолжение/колбэк.

Может можно показать, что то, что я хочу невозможно? Может какие-то ключевые слова для гугления есть?
источник

OK

Oleg Kurbatov in Clojure — русскоговорящее сообщество
Остаток функции проще всего определить через partial, если я правильно понял это описание.
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Oleg Kurbatov
Остаток функции проще всего определить через partial, если я правильно понял это описание.
partial позволяет определить первые аргумены функции.
тут же речь о теле функции
источник

n

ndr in Clojure — русскоговорящее сообщество
Привет, я только начинаю изучать 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)
источник

n

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

DL

Dmytro Lispyvnyi '(🌲 🍺) 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)
во-первых, никаких кемелкейсов
источник

DL

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

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
во вторых, в кложе лучше по дефолту юзать вектора
источник

DL

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

n

ndr in Clojure — русскоговорящее сообщество
Справедливо, мигрирую из другого ЯП, так что пока сложновато перестроиться
источник

n

ndr in Clojure — русскоговорящее сообщество
У меня по заданию список...
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
ndr
У меня по заданию список...
гмм, ну ок
источник

DL

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

DL

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

DL

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

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
если ты используешь для элемента только first и rest - значит надо деструктурировать
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
вместо (> x 0) надо юзать (pos? x)
источник

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)
(defn printList [lst]
 (if (> (count lst) 0)
   (do
     (println (first lst))
     (printList (rest lst))))
 (println "Finish"))
источник