Have you looked into the `some->` threading macro? https://clojure.github.io/clojure/clojure.core-api.html#cloj...
Yes, it gives you short circuiting on nil values. The post mentions `some->` and laments its inability to handle varying function signatures.
You can combine `some->` with other threading macros to make it achieve the desired effect, and you can also achieve the desired effect with `if-let` as the post demonstrates, but I believe the b/cond approach to be more readable than both.
https://github.com/Engelberg/better-cond