From 7dcfb720d1779f323bfff6a93a5858cb51b8b480 Mon Sep 17 00:00:00 2001 From: Mikhail Kuzmin Date: Fri, 4 Oct 2024 22:32:50 +0400 Subject: [PATCH] use trampoline Co-authored-by: KGOH --- src/darkleaf/di/core.clj | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/darkleaf/di/core.clj b/src/darkleaf/di/core.clj index b05b30b..370b1d3 100644 --- a/src/darkleaf/di/core.clj +++ b/src/darkleaf/di/core.clj @@ -68,7 +68,7 @@ (defn- resolve-dep [{:as ctx, :keys [under-construction]} acc key dep-type] (if (under-construction key) (circular-dependency! key) - (if-some [obj (find-or-build ctx key)] + (if-some [obj (:result (trampoline find-or-build ctx key))] (assoc acc key obj) (if (= :optional dep-type) acc @@ -93,8 +93,9 @@ obj)) (defn- find-or-build [ctx key] - (?? (find-obj ctx key) - (build-obj ctx key))) + (if-some [finded (find-obj ctx key)] + {:result finded} + #(array-map :result (build-obj ctx key)))) (defn- try-run [proc] (try