В этом случае вы хотите отобразить функцию над коллекцией (которая просто оказывается вектором);для каждого элемента в коллекции (который является картой - неудачное именование там), вы хотите сгенерировать новую карту, которая имеет все пары ключ-значение старой карты, плюс новый ключ, скажем, : avg .
например,
(into [] ; optional -- places the answer into another vector
(map ; apply the given function to every element in the collection
(fn [sg] ; the function takes a student-grade
(assoc sg ; and with this student-grade, creates a new mapping
:avg ; with an added key called :avg
(/ (+ (:test1 sg) (:test2 sg) (:test3 sg)) 3.0)))
student-grades ; and the function is applied to your student-grades vector
))
ps , который вы можете использовать (doc fn-name) для получения документации по нему;если вы новичок в Clojure, я бы посоветовал потусоваться с дружелюбными людьми на irc.freenode.net #clojure и почитать книгу - мой любимый в настоящее время Программирование Clojure , но я жду O'Предстоящая книга Рейджи Clojure, затаив дыхание.