such.control-flow
branch-on
macro
(branch-on value-form & body)
(branch-on (str "one" "two")
vector? :vector
string? :string
:else :unknown)
Evaluates the value-form
once, then checks that value against each predicate in the cond-like body. The value after the first matching predicate is returned. If there is no match and an :else
clause is present, its value is returned, otherwise nil
.
let-maybe
macro
(let-maybe bindings & body)
Like let
except that if any symbol would be bound to a nil
, the entire expression immediately short-circuits and returns nil
.
(let-maybe [v []
f (first v)
_ (throw (new Exception))]
(throw (new Exception)))
=> nil