Нам требуется функция, которая применительно к функции square
дает 25
.Ответ , данный Аланом Томпсоном ...
(fn [f] (f 5))
..., является ожидаемым.Но есть неисчислимые другие.Простейшей является функция, которая возвращает значение 25 независимо от ее аргумента:
(fn [_] 25)
Это достаточно распространенная конструкция, так что для этого есть основная функция constantly
.Таким образом, мы можем сократить это до
(constantly 25)
. Мы можем преобразовать любую функцию, способную принять один аргумент, в решение, переопределив ее ответ на аргумент square
:
(defn convert [g] (fn [x] (if (= x square) 25 (g x))))
Например,
=> ((convert +) square)
25