           (for [[k v] m]
             (map-entry (apply f k args) v)))))
 
-
 (defn map-vals-with-keys
   "Create a new map from m by calling function f, with two
   arguments (the key and value) to get a new value."

  [map key f & args]
  (assoc map key
         (apply f (get map key) args)))


;; Conditional update operations
;;--------------------------------------------------------------------

    (into {}
          (for [[k v] m]
            (map-entry (apply f k args) (apply f v args))))))

(defn fix
  "λ (fn T → T) → T → T
