39得票8回答
如何在Clojure中生成记忆化递归函数?

我正在尝试编写一个在Clojure中返回记忆化递归函数的函数,但是我无法让递归函数看到它自己的记忆化绑定。这是因为没有创建变量吗?另外,为什么不能在使用let创建的局部绑定上使用memoize? 这个略微不寻常的以特定数字开始的斐波那契数列生成器就是我希望能够实现的一种方式:(defn ma...

39得票4回答
Data.MemoCombinators是如何工作的?

我一直在查看Data.MemoCombinators的源代码,但我真的看不出它的核心是哪里。 请解释一下所有这些组合器背后的逻辑以及它们如何在实际编程中工作来加速你的程序。 我正在寻找这个实现的特定细节,并可选地将其与其他Haskell记忆化方法进行比较/对比。我理解什么是记忆化,不需要描...

35得票11回答
为什么记忆化不是一种语言特性?

我在思考:为什么我所知道的语言中,记忆化(memoization)不作为一种原生的语言特性呈现出来? 编辑:澄清一下,我的意思是语言提供一个关键字来指定某个函数可以进行记忆化,而不是每个函数都默认进行记忆化,只有在另外指定的情况下才不进行记忆化。例如,Fortran提供了PURE关键字来指定某...

32得票5回答
结合备忘录技术和尾递归

有没有可能将记忆化和尾递归结合起来?我目前正在学习F#,了解这两个概念,但似乎无法将它们结合起来。 假设我有以下memoize函数(来自《Real-World Functional Programming》):let memoize f = let cache = new Dictionary...

30得票12回答
记忆化在IT技术中有什么好处,它真的那么有帮助吗?

网上有一些可用于不同语言的自动记忆化库;但是如果不知道它们的用途、使用场景和工作原理,很难看出它们的价值。什么是使用记忆化的一些有说服力的论点,记忆化在哪些问题领域中特别突出?在这里尤其需要针对未了解该主题的人提供信息。

30得票4回答
我该如何在Python中记忆化一个类的实例化?

好的,这里是真实场景:我正在编写一个应用程序,并且我有一个表示某种类型文件的类(在我的情况下,这是照片,但该细节与问题无关)。每个Photograph类的实例都应该对应于照片的文件名。 问题是,当用户告诉我的应用程序加载文件时,我需要能够识别已经加载的文件,并使用该文件名的现有实例,而不是在...

27得票6回答
Python - 有没有一个可以处理不可哈希参数的记忆化装饰器?

我一直在使用下面的记忆化装饰器(来自于伟大的书《Python算法:掌握Python语言的基本算法》...顺便说一句,我非常喜欢它)。def memo(func): cache = {} @ wraps(func) def wrap(*args): if ...

27得票3回答
C语言的记忆化库?

我正在进行的项目中,有多个状态可以依赖计算返回相同的结果(并且没有副作用)。显而易见的解决方案是对所有昂贵的函数使用记忆化技术。 我需要一个可以处理多个状态的记忆化技术(这样我就可以使一个缓存集无效,而不会使另一个缓存集无效)。 有人知道适用于此类问题的好的 C 库吗? (请注意,它不能是 ...

27得票6回答
函数式编程语言中的自动记忆化

我一直认为Haskell会自动智能地进行记忆化。例如,像 naive Fibonacci 实现。fib 0 = 0 fib 1 = 1 fib n = fib (n-2) + fib (n-1) 因此它会很快。现在我读到了这个,似乎我错了——Haskell似乎不会自动记忆化。或者是我理解有误?...

26得票7回答
线程安全的记忆化

让我们以Wes Dyer的函数备忘录方法作为起点:public static Func<A, R> Memoize<A, R>(this Func<A, R> f) { var map = new Dictionary<A, R>(); ...