clojure-russia

Работа и релокейт: #jobs-rus | #clojure-russia-offtop Телеграм-чат https://t.me/clojure_ru
guliy 2018-03-03T09:37:00.000030Z

Друзья, а кто-нить имел дело в проде с https://github.com/juxt/yada? С виду сделано как надо, особенно подкупает концепция изоляции через ресурсы и максимальная декларативность описания, опять-таки swagger из коробки. Если есть что сказать - поделитесь, пожалуйста.

y.khmelevskii 2018-03-03T10:17:47.000009Z

Приветствую. Как вы выделяете активные ссылки в своих re-frame приложениях? Есть табы, которые меняют урл. Актывный таб нужно выделять. Я конечно моге написать, что-то типа такого

(defn active-link? [url]
  (clojure.string/starts-with?
   js/window.location.pathname
   url))
но не уверен насколько это норм

andrewboltachev 2018-03-03T11:27:27.000013Z

@y.khmelevskii в принципе любая библиотека для роутинга, например secretary, может вернуть объект, представляющий текущий адрес, что-то навроде {:handler :single-post-page, :post-id 42}. Данный объект нужно сохранить в db и затем сравнить с тем, чему соответствует данная ссылка

y.khmelevskii 2018-03-03T11:58:45.000042Z

@andrewboltachev спасибо, понял

1👍
kuzmin_m 2018-03-03T18:20:29.000030Z

Привет! А кто-нибудь видел lazy-let?

(lazy-let [x (do (prn :x) true)
           y (do (prn :y) true)]
  (or x y))         
И :y не должен печататься. Так то можно попробовать сделать макрос и внутри все зворачивать в delay, но это будет на порядок медленее. Может есть какой-то способ это все скомпилировать в макросе? Может быть это называется не lazy-let, а как-то иначе? Может быть есть вариант с более слабым условием. Т.е. вычисление происходит в момент первого использования.
(let-reorder [x (do (prn :x) :x)
              y (do (prn :y) :y)]
  (prn 1)
  (prn x)
  (prn 2)
  (prn y))

(do
  (prn 1)
  (let [x (do (prn :x) :x)]
    (prn x)
    (prn 2)
    (let [y (do (prn :y) :y)]
      (prn y))))