Data.MemoCombinators, где я могу найти примеры?

В этом пакете есть несколько функций для преобразования рекурсивных функций в рекурсивные функции динамического программирования для повышения производительности:

http://hackage.haskell.org/packages/archive/data-memocombinators/0.3/doc/html/Data-MemoCombinators. html # t: Memo

К сожалению, у них есть только пример для простейшего типа функции, и нет примеров того, как использовать функцию от 2 переменных. Где я могу найти пример того, как, например, превратить функцию [Int] -> Int -> Int в функцию динамического программирования? В документации говорится, что memo2 принимает два Memo в качестве первых аргументов, но я не уверен, что это значит.

Решение:

Как описал Хаммар, вместо определения функции как:

foo :: [Int] -> Int -> Int
foo list value = ...

использовать memo2:

import qualified Data.MemoCombinators as Memo

foo = Memo.memo2 (Memo.list Memo.integral) Memo.integral foo'
  where ... (define foo' with recursive calls to foo.)

8
задан NoBugs 18 November 2011 в 07:20
поделиться