在Haskell中使用字符串键进行动态编程

时间:2012-10-14 09:30:59

标签: string haskell memoization

对于纯函数式编程习惯而言,我不知道如何实现动态编程的这种情况。我有一个函数f :: String -> [String],它是递归计算的,想要记住它。输入String可以是任意的,所以我想像懒惰的Map这样的东西是需要的,但找不到任何东西。如何在Haskell中实现这种情况?

2 个答案:

答案 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)

本文提供了一些很好的信息。看看斐波那契函数是如何被记忆的。也许它会给你一些见解:

http://www.haskell.org/haskellwiki/Memoization