Fork me on GitHub

I’ve been reading through the following page from the compojure-api wiki, and I’m confused by a few things. 1. What are let/letk bindings, and what is the difference between them? I can’t find an explanation anywhere in the wiki. 2. How is the vector passed into :let/:letk/:middleware/etc. used by compojure-api? I know that it’s probably going to be macro-expanded, but beyond that it’s unclear how the arg is processed. 3. Why in the example is the _ arg re-used in the method body? Isn’t _ a convention for when an arg is unnecessary? I suspect that once I understand let/letk bindings better, this will all become clearer, but answers to any of the above would be appreciated.


1. letk/fnk/defnk bindings is explained here: (it talks only about defnk, but letk uses the same syntax)


@U1NDXLDUG in that link, defnk is a way of assigning args to vars in a function by passing them as :var arg. But that’s pretty much already how let bindings function…“let left-val equal right-val”. So what’s the difference in the context of a let binding?


The destructuring syntax is different from the standard one


Ok, I was confused by the use of function definitions. So instead of (let [{:keys [foo]} foo-map]) with a letk binding you could just do (let [foo foo-map]).


(don't know about 2/3)