diff --git a/src/babashka/pods/impl.clj b/src/babashka/pods/impl.clj index 07c913c..cb41ec8 100644 --- a/src/babashka/pods/impl.clj +++ b/src/babashka/pods/impl.clj @@ -186,8 +186,8 @@ (next-id)) pod (assoc pod :pod-id pod-id) vars-fn (fn [ns-name-str vars] - (reduce - (fn [m var] + (mapv + (fn [var] (let [name (get-string var "name") async? (some-> (get var "async") bytes->string @@ -195,24 +195,19 @@ name-sym (symbol name) sym (symbol ns-name-str name) code (get-maybe-string var "code")] - (conj m [name-sym - (or code - (fn [& args] - (let [res (invoke pod sym args {:async async?})] - res)))]))) - ;; vars should be ordered as one code segment may depend on the previous one - [] + [name-sym + (or code + (fn [& args] + (let [res (invoke pod sym args {:async async?})] + res)))])) vars)) - pod-namespaces (reduce (fn [namespaces namespace] - (let [name-str (-> namespace (get "name") bytes->string) - name-sym (symbol name-str) - vars (get namespace "vars") - vars (vars-fn name-str vars)] - (conj namespaces [name-sym vars]))) - ;; namespaces should also be ordered, allowing - ;; one namespace to leverage the previous one - [] - pod-namespaces) + pod-namespaces (mapv (fn [namespace] + (let [name-str (-> namespace (get "name") bytes->string) + name-sym (symbol name-str) + vars (get namespace "vars") + vars (vars-fn name-str vars)] + [name-sym vars])) + pod-namespaces) pod (assoc pod :namespaces pod-namespaces)] (swap! pods assoc pod-id pod) pod)))