With rail you can handle errors in functional way and remove many error checks. It is implementation of Railway Oriented Programing.
You can quickload cl-rail with:
If you’d like to know why or how you should definitely view the talk and the post by Scott Wlaschin. For now there is not that much examples of usage but you can see the clojure`s implementation example of FizzBuzz here.
To see how it’s used in real world to handle errors you can look at simple example of reading some metadata from file (which can obviously fail) in my tool to manage project folders (the part in ->> form).