     (into {}
           (for [[k v] m]
             (map-entry (apply f k args) (apply f v args))))))
-
 
 (defn fix
   "λ (fn T → T) → T → T

      dat
      (recur f dat'))))


(defn update
  "λ {A → B} → A → (λ B → args* → C) → args* → {A → C}


       [k (apply f v args)])
     (into {})))

(defn map-entry [x y]
  [x y])

(defn map-keys
  "Create a new map from m by calling function f on each key to get a
