Я учу себя Clojure.
В языке, отличном от FP, я мог бы легко написать вложенные if, и если бы я не специально помещал else, тогда управление просто выходило бы из блока if. Например:
Thing myfunc()
{
if(cond1)
{
if(cond2)
return something;
}
return somethingelse;
}
Однако в Clojure нет оператора return (который я знаю), поэтому, если я пишу:
(defn myfunc []
(if (cond1)
(if (cond2) something))
somethingelse)
тогда нет "возврата" на "что-то". Кажется, это просто сказать, хорошо, здесь у нас есть ценность, теперь пусть продолжит выполнение. Очевидным решением было бы объединение условий, т.е.:
(if (and (cond1) (cond2))
something
somethingelse)
но это становится громоздким/уродливым при больших условиях. Кроме того, для добавления заявления в "else" часть cond1 потребуется дополнительное обновление. Есть ли какое-то элегантное решение для этого?