Поскольку я написал комментарий, я напишу ответ.(Ответ skuro дает всю информацию, но, возможно, слишком много)
- Прежде всего, я думаю, что в первую очередь должны быть более важные вещи.
seq
- это то, что всеиспользует большую часть времени, но empty?
подходит для его просто (not (seq lat))
- В Clojure '() имеет значение true, поэтому обычно вы хотите вернуть что-то false, если последовательность завершена.
- если у вас есть только одна важная ветвь в вашей, если другая возвращает false / '() или что-то в этом роде, почему вы должны записать эту ветку?
when
имеет только одну ветвь, это особенно хорошо, если вы хотите иметь побочные эффекты.Вам не нужно использовать do
.
См. Этот пример:
(если false '() (do (println 1) (println 2) (println 3).
PS
Не то чтобы существуют функции, называемые if-not
и when-not
, они часто лучше, чем (if (not true) ...)