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