IS
Size: a a a
IS
IS
DM
DM
DM
DM
KC
foo!
взорвется или породит сайдэффект.T
!
— функция с сайдэффектами*
— "приватная версия", т.е. например, естьupdate
, который обработает аргументы и вызовет update*
'
— слегка изменная переменная(let [ctx' (update-in ctx path foo)] ...)
Наличие таких переменных в количестве более, чем одной или с более, чем одним уровнем вложенности (ctx''
) ведет трудночитаемому коду и сигнализирует о том, что хорошо бы придумать нормальное имя переменной?
— функция предикат, вернет булианis-
— булиан, как правило получается так(let [is-x-empty (empty? x)] ...)
*
— что-то, что можно дерефнуть-
— не знаю как сформулировать, помогитиT
!
— функция с сайдэффектами*
— "приватная версия", т.е. например, естьupdate
, который обработает аргументы и вызовет update*
'
— слегка изменная переменная(let [ctx' (update-in ctx path foo)] ...)
Наличие таких переменных в количестве более, чем одной или с более, чем одним уровнем вложенности (ctx''
) ведет трудночитаемому коду и сигнализирует о том, что хорошо бы придумать нормальное имя переменной?
— функция предикат, вернет булианis-
— булиан, как правило получается так(let [is-x-empty (empty? x)] ...)
*
— что-то, что можно дерефнуть-
— не знаю как сформулировать, помогити(defn create-ctx []
(let [*ctx (atom {})
*ctx' (swap! *ctx assoc :self *ctx)]
@*ctx'))
(defn set-ctx! [ctx]
(reset! (:self ctx) ctx))
(defn transformable? [ctx]
(get-in ctx [...]))
(defn transform* [ctx path fn]
(update-in ctx path fn))
(defn transform [ctx args]
(let [is-ctx-transformable (transformable? ctx)]
(if is-ctx-transformable
(apply transform* ctx args)
ctx)))
(defn do-some-work! [ctx] ...)
(defn -main [& args]
(let [ctx (create-ctx)]
(do-some-work! ctx)
(set-ctx! (apply transform ctx args))))
T
(defn create-ctx []
(let [*ctx (atom {})
*ctx' (swap! *ctx assoc :self *ctx)]
@*ctx'))
(defn set-ctx! [ctx]
(reset! (:self ctx) ctx))
(defn transformable? [ctx]
(get-in ctx [...]))
(defn transform* [ctx path fn]
(update-in ctx path fn))
(defn transform [ctx args]
(let [is-ctx-transformable (transformable? ctx)]
(if is-ctx-transformable
(apply transform* ctx args)
ctx)))
(defn do-some-work! [ctx] ...)
(defn -main [& args]
(let [ctx (create-ctx)]
(do-some-work! ctx)
(set-ctx! (apply transform ctx args))))
KR
T
T
(let [x-empty? (partial empty? x)] ...)
DL
!
— функция с сайдэффектами*
— "приватная версия", т.е. например, естьupdate
, который обработает аргументы и вызовет update*
'
— слегка изменная переменная(let [ctx' (update-in ctx path foo)] ...)
Наличие таких переменных в количестве более, чем одной или с более, чем одним уровнем вложенности (ctx''
) ведет трудночитаемому коду и сигнализирует о том, что хорошо бы придумать нормальное имя переменной?
— функция предикат, вернет булианis-
— булиан, как правило получается так(let [is-x-empty (empty? x)] ...)
*
— что-то, что можно дерефнуть-
— не знаю как сформулировать, помогитиDL
!
— функция с сайдэффектами*
— "приватная версия", т.е. например, естьupdate
, который обработает аргументы и вызовет update*
'
— слегка изменная переменная(let [ctx' (update-in ctx path foo)] ...)
Наличие таких переменных в количестве более, чем одной или с более, чем одним уровнем вложенности (ctx''
) ведет трудночитаемому коду и сигнализирует о том, что хорошо бы придумать нормальное имя переменной?
— функция предикат, вернет булианis-
— булиан, как правило получается так(let [is-x-empty (empty? x)] ...)
*
— что-то, что можно дерефнуть-
— не знаю как сформулировать, помогитиT
DL
DL