【问题标题】:How do I define an anonymous recursive function? [duplicate]如何定义匿名递归函数? [复制]
【发布时间】:2016-10-18 13:35:10
【问题描述】:

可以使用 lambda 表达式定义匿名函数:

-- Contrived example
> apply f x = f x
> apply (\n -> n + 1) 3
4

但是可以定义一个匿名的递归函数吗?

> apply (\n -> n * ??? (n - 1)) 3 -- compute a factorial
6

【问题讨论】:

    标签: haskell


    【解决方案1】:

    导入Data.Function 并使用fix 函数计算一个递归函数的不动点,该函数将递归应用函数作为参数

    > import Data.Function
    > :t fix
    fix :: (a -> a) -> a
    > apply (fix $ \f n -> if n == 0 then 1 else n * f (n - 1)) 3
    6
    

    【讨论】:

      猜你喜欢
      • 2021-08-03
      • 2022-06-20
      • 1970-01-01
      • 2011-10-26
      • 2015-11-21
      • 2011-01-29
      • 2011-04-22
      • 2020-09-24
      • 1970-01-01
      相关资源
      最近更新 更多