2
Ord`参数是否有一个共同的Haskell成语memoizing递归函数型memoize的功能与`在Haskell
Ord a => a -> SomeType
我特别有型递归函数
(Int, Int, [Int]) -> Int
我想要记忆。
Ord`参数是否有一个共同的Haskell成语memoizing递归函数型memoize的功能与`在Haskell
Ord a => a -> SomeType
我特别有型递归函数
(Int, Int, [Int]) -> Int
我想要记忆。
你的数据类型
(Int, Int, [Int])
可以被映射到Integer
。第一个Int
仅仅是一堆比特,并且Int
s的列表仅仅是一个比特列表,一次一个一个进入。由于可以为Integer
制作记忆树,因此可以为此数据类型创建记忆树。该memo-trie package同意,并提供以下3个相关的实例:
instance HasTrie Int
instance HasTrie x => HasTrie [x]
instance (HasTrie a, HasTrie b, HasTrie c) => HasTrie (a, b, c)
有你看了[数据memocombinators(http://hackage.haskell.org/package/data-memocombinators-0.3)或[MemoTrie] (https://hackage.haskell.org/package/MemoTrie)库或者[Haskell wiki](http://www.haskell.org/haskellwiki/Memoization)上的记录? – bheklilr 2014-09-06 04:04:39
@bheklilr我曾看过Haskell的wiki,但是从我对wiki的了解很少,我不确定如何翻译为一般的'Ord'情况,因为它似乎并不清楚我将如何在列表,或者如何为一般的'Ord'类型构造trie。 – math4tots 2014-09-06 04:18:24
'Ord'没有足够的信息来构建一个纯粹的memoization树。为了使代码变得纯粹,数据结构必须先验知晓,以便在发现计算结果时不需要改变内存中的懒惰结构,因为这样做会产生副作用。对于monadic memoization,'Ord'就足够了;它可以让你发现结构的计算进行,让你建立例如一个'Map'。 – Cirdec 2014-09-06 04:40:05