On 5/26/16, 7:50 AM, "John Szakmeister" <jszakmeis...@gmail.com on behalf of j...@szakmeister.net> wrote: >def verify_position(pos, type): > # It's acceptable to have a None value--it just means don't > # change the position for the axis. > if pos is None: > return True > > # Anything outside our limits is invalid. > if (pos > 90) or (pos < 0): > return False > > if type == 'switched' and pos not in (0, 90): > # Switched axes only allow 0 and 90, and nothing in > # between. > return False > > if type == 'dual': > # We can't control the value on this axis, so anything > # other than None is invalid. > return False > > return True
(defn verify-position [pos type] (cond (nil? pos) true (or (> pos 90) (< pos 0)) false (and (= type “switched”) (not (in-range pos 0 90))) false (= type “dual”) false :else true)) (or :else (do-stuff-to-verified-position pos type) if that branch is more complex?) A pattern that I’ve also started using is something like this: (defn guarded-process [data] (some-> data first-guard second-guard (another-guard :with “parameters”) (process-the-data 1 2 3 4))) That works well for a process that operates on non-nil data and then you write the guards to return the data if it’s valid or nil if it isn’t. Sean Corfield -- (904) 302-SEAN An Architect's View -- http://corfield.org/ "If you're not annoying somebody, you're not really alive." -- Margaret Atwood -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.