   (-> ast :op (= :fn)))
 
 
+(defn fn->name
+  "λ AST → (Option Symbol)
+
+  If the argument AST is a fn, attempts to return the internal name of
+  the fn defaulting to a freshly generated symbol."
+  [ast]
+  (when (fn? ast)
+    (-> ast :internal-name)))
+
+
 (defn fn-method?
   "λ AST → Boolean
 

  Indicates whether the argument form is a binding node."
  [ast]
  (-> ast :op (= :binding)))


(defn local?

  [ast]
  (when (local? ast)
    (:name ast)))


(defn invoke?
