;; I feel like this should be less lines (defn add-edge [graph edge] (let [parts (clojure.string/split edge #",") from (first parts) to (second parts) graph (if (not (contains? graph from)) (assoc-in graph [from] #{}) graph) graph (if (not (contains? graph to)) (assoc-in graph [to] #{}) graph)] (update-in graph [from] conj to)))