Макрос читателя #()
для функций анонимуса является хорошим кандидатом здесь:
(-> your-arg
(fn1 arg2 arg3)
(fn2 arg4 arg5)
(#(fn3 arg6 arg7 %)) )
Он гибкий и добавляет мало визуального шума. Конечно, вы можете делать много разных вещей, в этом случае частичное применение функции также будет работать:
(-> your-arg
(fn1 arg2 arg3)
((partial fn2 arg4 arg5)))
Существует также макрос ->>
, который направляет первое выражение в последнюю позицию. Конечно, в вашем случае использования это не очень помогает, так как вам придется настроить некоторые вызовы функций. Однако если вы объединяете много функций, которые должны принимать выражение в качестве первого аргумента, а затем многие функции, которые принимают выражение в качестве последнего аргумента, вы можете сделать что-то вроде
(->>
(-> your-arg
(fn1 arg2 arg3)
(fn2 arg5 arg6))
(fn3 arg7 arg8)
(fn4 arg10 arg11))
РЕДАКТИРОВАТЬ: Добавлены дополнительные скобки в первом примере.