KR
Size: a a a
KR
ap
ap
ap
E
А
AG
foo(), которая может вернуть nil, если пользователь ввел некорректные данные (foo input) => nilfaa(), которая принимает результат работы foo()(faa (foo input))nil то она крашицо.IG
IG
(-> input
(foo)
(or (throw (ex-info ...)))
(bar)
(or (throw (ex-info ...))))
AG
MP
AG
MP
MP
MP
(loop [val (input)]
(if (valid? val)
val
(recur (input))))
AG
KR
DL
AG
AU
fnil еще может помочь, если захочешь какой-то дефолтный аргумент проставлять, хотя это вроде не совсем подходит под описанный кейс.