Changes in new versions / Clojure 1.5

;; *** before: ***
(defn first-word-length-old [m]
  (let [words (:words m)]
    (if words
      (let [w (first words)]
        (if w
          (count w)
          nil))
      nil)))

(first-word-length-old {:words nil})
;=> nil

;; *** in version 1.5: ***
;; some-> stops and returns nil as soon as a step returns nil
(defn first-word-length [m]
  (some-> m :words first count))

(first-word-length {:words nil})
;=> nil
(first-word-length {:words ["clojure" "lisp"]})
;=> 7