;; *** 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