fastmemo-0.1.0.0: test/Examples.hs
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
module Examples where
import Data.Function.FastMemo (Memoizable, memoize)
import Data.Word (Word8)
import GHC.Generics (Generic)
import Numeric.Natural (Natural)
data Color = Color {red :: Word8, green :: Word8, blue :: Word8}
deriving (Generic, Memoizable)
data Tree a = Leaf a | Node (Tree a) (Tree a)
deriving (Generic, Memoizable)
fibonacci :: Natural -> Natural
fibonacci = memoize $ \i -> case i of
0 -> 0
1 -> 1
_ -> fibonacci (i - 1) + fibonacci (i - 2)