-- Computes fibonacci numbers using memoization -- by Scot Drysdale, 3/3/2008 module Fib where import MemoS fibHelper :: MemoFunction Integer Integer fibHelper n = if n < 2 then return 1 else do fm1 <- callMemo fibHelper (n-1) fm2 <- callMemo fibHelper (n-2) return (fm1 + fm2) fib :: Integer -> Integer fib n = runMemo fibHelper n