【发布时间】:2016-12-18 06:37:14
【问题描述】:
我有一个函数,它接受一个整数并返回一个整数列表。
我如何有效地将这个函数映射到一个初始整数,然后对于结果列表中之前未映射的每个项目,应用相同的函数并基本上生成一个无限列表。
例如
f :: Int -> [Int]
f 0 = [1,2]++(f 1)++(f 2)
此外,我需要能够将结果列表索引到 10E10。这将如何优化?记忆?
【问题讨论】:
-
这可能是一个没有经过深思熟虑的例子,但这个定义是无效的。
f仅为 0 定义;f 1和f 2根本没有定义。您可能想了解Data.List.unfoldr。 -
@chepner 我可以添加更多示例,但我不想定义超出理解问题所必需的内容
标签: algorithm haskell memoization