 (defn env-either [E E'] (env-combine f-either E E'))
 (defn env-both [E E'] (env-combine f-both E E'))
 
+;;(def value-env {:effects {:value :linear}})
+;;(defn &using-value
+;;  ([&x fural] (&let [x &x] (with-meta x (assoc-in (meta x) [:capturing :effects :value] fural))))
+;;  ([&x] (&using-value &x true)))
 
 (declare &A &A* &Aargs)
 
 (defn &A* [xs] (&let [r (&map &A (reverse xs))] (vec (reverse r))))
-(defn &Aargs [x]
+(defn &Aargs [x] ;; &using-value everywhere
   (if-let [[args star-arg more-args kw-arg] x]
     (&let [kw-arg (&A kw-arg)
            more-args (&A* more-args)

        [nil] &nil
        [[:id s]] (&do (&update-in [:vars s] f-once-more) (&r x))
        [[:bind [:id s] :as n a]] (&let [_ (&assoc-in [:vars s] false)
                                         a (&A a)
                                         * (&r [:bind n a])])
        [[:unbind [:id s]]] (&do (&assoc-in [:vars s] false) (&r x))
        [[:constant c]] (&r x)

           args (&A* args)]
          [(vec args) star-arg (vec more-args) kw-arg])
    &nil))

(defn &A [x]
  ;; NB: reverse order matters in listing effect capturing
