私は Clojure の初心者で、優れたオープン ソース コードを読んで Clojure を学んでいます。そこで、Ring を選択してコードを読み始めましたが、assoc-query-params 関数でスタックしてしまいました。(これはring.middleware/params.cljにあります)
そして、なぜ「merge-with」が使われるのか理解できませんでした。このコードスニペットを理解するのを手伝ってくれる人はいますか?
(defn- assoc-query-params
"Parse and assoc parameters from the query string with the request."
[request encoding]
; I think (merge request (some-form)) is enough
; but the author used merge-with with merge function.
(merge-with merge request
(if-let [query-string (:query-string request)]
(let [params (parse-params query-string encoding)]
{:query-params params, :params params})
{:query-params {}, :params {}})))