title: Clojure: filtering with a function of multiple args
body: <p>I have a some data as follows</p>
  
  <pre><code>;authors
  (def china {:name "China Miéville", :birth-year 1972})
  (def octavia {:name "Octavia E. Butler"
                :birth-year 1947
                :death-year 2006})
  (def friedman {:name "Daniel Friedman" :birth-year 1944})
  (def felleisen {:name "Matthias Felleisen"})
  
  ;books
  (def cities {:title "The City and the City" :authors #{china}})
  (def wild-seed {:title "Wild Seed", :authors #{octavia}})
  (def embassytown {:title "Embassytown", :authors #{china}})
  (def little-schemer {:title "The Little Schemer"
                       :authors #{friedman, felleisen}})
  
  (def books [cities, wild-seed, embassytown, little-schemer])
  </code></pre>
  
  <p>So If I want to check if a given book has author I use the function</p>
  
  <pre><code>(defn has-author? [book author]
    (contains? (:authors book) author)
  )
  </code></pre>
  
  <p>But I want to get books from a particular author how do i get it by filter? I tried:</p>
  
  <pre><code>(defn books-by-author [author books]
   (filter has-author? (books author))
  )
  </code></pre>