 ;;    - optional: with binding
 ;; 3. Match a key in a map to some specific value.
 ;;    - without binding - with binding
-;;    - optional:  with binding
+;;    - optional: with binding
 ;; 4. Match the value at a path in a map to a specific value.
 ;;    - without binding - with binding
-;;    - optional:  with binding
+;;    - optional: with binding
 
 ;; 1.
 (define-record-type KeyExistsWithoutBindingClause

   matcher path-matches-without-binding-clause-matcher])

(defn path-matches-without-binding-clause
  [path matcher]
  {:pre [(and (path? path) (matcher? matcher))]}
  (make-path-matches-without-binding-clause path matcher))

   binding optional-key-exists-with-binding-clause-binding])

(defn optional-key-exists-with-binding-clause
  "Returns an optional clause that asserts the existence of a non-nil value at `key`. When evaluated, binds it's result to `binding`."
  [key bind]
  (make-optional-key-exists-with-binding-clause key bind))

