Я не уверен, что это хорошая практика программирования, но я хотел бы знать, можно ли определить рекурсивную функцию, используя выражение лямбда.
Это искусственный пример, который я составил: Таким образом, можно рекурсивно определить факториальную функцию в Haskell следующим образом
factorial :: Integer -> Integer
factorial 1 = 1
factorial (n + 1) = (n + 1) * factorial n
Теперь мне нужна функция f
такая, что f n = (factorial n) + 1
. Вместо того, чтобы использовать имя для factorial n
(т.е. Определяя его перед рукой), я хочу определить f
, где factorial n
задано лямбда-выражение в определении f
. Могу ли я использовать рекурсивное определение лямбда в f
вместо использования имени factorial?