Вы только что удалили и задали этот вопрос? Я копирую свой предыдущий ответ здесь (к счастью, мой браузер кэшировал его):
Ну, вы, наверное, хотите что-то подобное, верно?
((repeated square 3) 5)
-> (square ((repeated square 2) 5))
-> (square (square ((repeated square 1) 5)))
-> (square (square (square ((repeated square 0) 5))))
-> (square (square (square (identity 5))))
(Я не знаю, предопределена ли идентичность в Схеме. Если нет, то ее легко написать.)
Теперь, это не может быть воспроизведено напрямую, потому что вы не можете волшебным образом заключить код вне вызова повторения с произвольным материалом. Однако как эти шаги сокращения выглядят при переписывании с использованием compose? Можете ли вы выделить шаблон в результирующем списке шагов и воспроизвести его?