【问题标题】:Dynamic programming with string keys in Haskell在 Haskell 中使用字符串键进行动态编程
【发布时间】:2012-10-14 09:30:58
【问题描述】:

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

【问题讨论】:

  • 你看过 Hackage 吗?大约有十几个可用的记忆库......

标签: string haskell memoization


【解决方案1】:

使用记忆库:

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

【讨论】:

  • 我没想到它是作为外部库实现的,也没有在hackage上搜索搜索。而且这些函数不在默认的 GHC 库中似乎很奇怪。
猜你喜欢
  • 1970-01-01
  • 2015-01-31
  • 2014-05-20
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-17
  • 2017-02-09
相关资源
最近更新 更多