Я в основном хочу это:
(defn mymax
([a b] (if (> a b) a b))
([a b & rest] (apply recur (conj rest (mymax a b)))))
Так что: (mymax 1 2 3 4)
хвост звонит (mymax 2 3 4)
который хвост звонит (mymax 3 4)
Я вижу проблему, когда «apply» перестает возвращаться в хвостовое положение, что означает, что это не сработает. Но я не понимаю, как я не могу использовать применить для переменных аргументных функций
[Обратите внимание, я знаю, что вы можете решить эту конкретную проблему с помощью Reduce. Просто интересно, можно ли выполнить хвостовую рекурсию с переменными параметрами]