I'm not so sure I agree with that. I had a conversation with @reiddraper last week about this type of thing and we decided that it was best to keep functions pure when possible unless there was a real measurable performance hit. The root caller (policy_from_json/1) actually does check for an error being returned from this, and the parse_bool function also returns an error from the same condition_/1 function.