【发布时间】:2019-09-24 11:34:23
【问题描述】:
文件夹标识是
foldr (:) []
更一般地说,使用折叠,您可以破坏结构并最终得到一个汇总值,或者以这样一种方式注入结构,最终得到相同的输出结构。
[Int] -> [Int]
要么
[Int] -> Int
要么
[Int] -> ?
我想知道展开器/l 是否有类似的身份。
我知道怎么弄
Int -> [Int]
带有展开/ana。
我正在寻找某种方式从
Int -> Int
使用递归方案。
【问题讨论】:
-
foldr (:) []对应的身份是unfoldr uncons。但是你在寻找什么样的Int -> Int函数?那里没有可以构造、破坏或以其他方式递归的结构。 -
@user11228628 如果 OP 使用递归定义的自然数,那么将有一个展开并非完全微不足道,尽管我不确定这样做与这个特定问题有多大的相关性。
-
我正在寻找可以基于输入整数递归并返回整数的东西。类似于使用递归方案的事实。
-
阶乘 0 = 1 阶乘 n = n * 阶乘 (n - 1)
-
您可以使用
hylomorphism 编写阶乘;你问到底该怎么做?这个问题似乎与是否可以使用展开l/r 定义恒等函数无关,因为阶乘不是恒等函数。
标签: haskell recursion-schemes catamorphism anamorphism