对于纯函数式编程习惯而言,我不知道如何实现动态编程的这种情况。我有一个函数f :: String -> [String]
,它是递归计算的,想要记住它。输入String
可以是任意的,所以我想像懒惰的Map
这样的东西是需要的,但找不到任何东西。如何在Haskell中实现这种情况?
答案 0 :(得分:1)
使用memoizer库:
import qualified Data.MemoCombinators as Memo
f :: String -> [String]
f = Memo.list Memo.char memof -- because String = [Char]
where
memof x = ... f ... -- call *f* recusively (not memof)
有关详情,请参阅documentation。另请参阅MemoTrie
答案 1 :(得分:0)
本文提供了一些很好的信息。看看斐波那契函数是如何被记忆的。也许它会给你一些见解: