Как написать рекурсивное лямбда-выражение в Haskell?

Я не уверен, что это хорошая практика программирования, но я хотел бы знать, можно ли определить рекурсивную функцию, используя лямбда-выражение.

Это искусственный пример, который я придумал: Итак, можно определить факториальную функцию в Haskell рекурсивно следующим образом

factorial :: Integer -> Integer 
factorial 1 = 1
factorial (n + 1) = (n + 1) * factorial n

Теперь мне нужна функция f такая, что fn = (factorial n ) + 1 . Вместо того, чтобы использовать имя для факториала n (т. Е. Определять его заранее), я хочу определить f , где факториал n дается лямбда-выражением в определении из и . Могу ли я использовать рекурсивное определение лямбда в f вместо имени факториала?

27
задан hammar 21 August 2011 в 21:54
поделиться