There is nothing special about doall with an if. println returns nil so the value of the whole doall will be a seq of nil. I assume you are doing that to debug the lambda. I assume the arguments to map are sequences outside of the lambda. Not sure where present is introduced. Seems like it should print different values based on what you have. Experiment with the doall as you have above but outside of the context of your code to verify that it works as intended. My guess is there’s some bug in the application logic, but there’s not enough information to help you debug this.