Я использовал erlang в прошлом, и у него есть некоторые действительно полезные вещи, такие как функции сопоставления рисунков или "функции защиты". Пример из документов erlang:
fact(N) when N>0 ->
N * fact(N-1);
fact(0) ->
1.
Но это может быть расширено до более сложного примера, когда форма параметра и значения внутри него совпадают.
Есть ли что-либо подобное в clojure?