Old/sampou.org/nobsun_memo

nobsun_memo

nobsun:memo


無保証

Memoisation

Control.Memo


Control.Memo

概略

関数をメモ化する高階関数 memo

Memoise参照

インストールの概略

% darcs get http://darcs.sampou.org/memo
% cd memo
% emacs memo.cabal
% runhaskell Setup.lhs configure --prefix=$HOME
% runhaskell Setup.lhs build
% runhaskell Setup.lhs install

使い方の概略

{-# OPTIONS_GHC -fglasgow-exts #-}

import Control.Memo
import Data.Map

fibF :: (Num a, Num b) => (a -> b) -> a -> b
fibF f 0 = 0
fibF f 1 = 1
fibF f n = f (n-2) + f (n-1)

fib :: Integer -> Integer
fib = memo (undefined :: (Memo Map) Integer Integer) fibF

実行結果

% ghci -v0 fib.hs
*Main> :set +s
*Main> fib 1000
43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875
(0.03 secs, 1171224 bytes)

注意

  • 無保証
  • memo の第1引数はメモ表の型を処理系に教えるための kluge
  • memo の第2引数の関数の不動点がメモ化される

コメント


Last modified : 2007/04/05 11:36:51 JST