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