                      slurp
                      str/split-lines
                      (mapv read-string)))
-
-(def part-one (combinations containers 150))  
+(require '[clojure.pprint :refer [pprint]])
+(def part-one (let [[binds body] (pprint (gen-bind-body containers 150))]
+                (count (eval (list 'for' binds body)))))  

(macroexpand-1 '(combinations-2 test-vec 10))

(combinations-3 test-vec 10)
(macroexpand-1 '(combinations-3 test-vec 10))

(def test-vec [1 2])
(combinations test-vec 10)

(def containers (->> "day17.txt"
                     io/resource

       (foor bindings# (vec symbols#)))))

(defmacro combinations-3 [sizes liters]
  `(for 
    [~@(concat (interleave 
                (map #(symbol (str "n" %)) sizes) 
                (map #(list range 0 (inc (quot liters %))) sizes))
               (list :when (list '= liters 
                                 (list 'apply '+ (conj (map #(symbol (str "n" %)) sizes) 'list)))))] 
     [~@(map #(symbol (str "n" %)) sizes)]))

(defmacro for' [bindings body]
  (let [bindings# bindings
        body# body] 
    `(for [~@bindings] [~@body])))

(foor [n (range 2)] n)

