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