Safe Haskell | None |
---|---|
Language | Haskell2010 |
The memo function remembers the last argument passed and the last result. When a new value is passed, it compares it with the previous value and if they match, the previous result is returned from memory. This is useful when computing Html is expensive and benefits from memoization.
Synopsis
- class Memo f where
- memo :: f -> f
- memo1 :: Eq a => (a -> b) -> a -> b
- memo2 :: Eq a => Eq b => (a -> b -> c) -> a -> b -> c
- memo3 :: Eq a => Eq b => Eq c => (a -> b -> c -> d) -> a -> b -> c -> d
- memo4 :: Eq a => Eq b => Eq c => Eq d => (a -> b -> c -> d -> e) -> a -> b -> c -> d -> e
- memo5 :: Eq a => Eq b => Eq c => Eq d => Eq e => (a -> b -> c -> d -> e -> f) -> a -> b -> c -> d -> e -> f
- memo6 :: Eq a => Eq b => Eq c => Eq d => Eq e => Eq f => (a -> b -> c -> d -> e -> f -> g) -> a -> b -> c -> d -> e -> f -> g
- memo7 :: Eq a => Eq b => Eq c => Eq d => Eq e => Eq f => Eq g => (a -> b -> c -> d -> e -> f -> g -> h) -> a -> b -> c -> d -> e -> f -> g -> h
- memo8 :: Eq a => Eq b => Eq c => Eq d => Eq e => Eq f => Eq g => Eq h => (a -> b -> c -> d -> e -> f -> g -> h -> i) -> a -> b -> c -> d -> e -> f -> g -> h -> i
- memo9 :: Eq a => Eq b => Eq c => Eq d => Eq e => Eq f => Eq g => Eq h => Eq i => (a -> b -> c -> d -> e -> f -> g -> h -> i -> j) -> a -> b -> c -> d -> e -> f -> g -> h -> i -> j
- memo1' :: (t -> t -> Bool) -> (t -> a) -> t -> a
- memo2' :: ((a1, b) -> (a1, b) -> Bool) -> (a1 -> b -> a2) -> a1 -> b -> a2
- memo3' :: ((t1, t2, t3) -> (t1, t2, t3) -> Bool) -> (t1 -> t2 -> t3 -> a) -> t1 -> t2 -> t3 -> a
- memo4' :: ((t1, t2, t3, t4) -> (t1, t2, t3, t4) -> Bool) -> (t1 -> t2 -> t3 -> t4 -> a) -> t1 -> t2 -> t3 -> t4 -> a
- memo5' :: ((t1, t2, t3, t4, t5) -> (t1, t2, t3, t4, t5) -> Bool) -> (t1 -> t2 -> t3 -> t4 -> t5 -> a) -> t1 -> t2 -> t3 -> t4 -> t5 -> a
- memo6' :: ((t1, t2, t3, t4, t5, t6) -> (t1, t2, t3, t4, t5, t6) -> Bool) -> (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> a) -> t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> a
- memo7' :: ((t1, t2, t3, t4, t5, t6, t7) -> (t1, t2, t3, t4, t5, t6, t7) -> Bool) -> (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> a) -> t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> a
- memo8' :: ((t1, t2, t3, t4, t5, t6, t7, t8) -> (t1, t2, t3, t4, t5, t6, t7, t8) -> Bool) -> (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> a) -> t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> a
- memo9' :: ((t1, t2, t3, t4, t5, t6, t7, t8, t9) -> (t1, t2, t3, t4, t5, t6, t7, t8, t9) -> Bool) -> (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> a) -> t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> a
Variadic Class
Variadic ditzy memoizer that only recalls at most one thing.
memo = id
Instances
(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i) => Memo (a -> b -> c -> d -> e -> f -> g -> h -> i -> j) Source # | |
Defined in Shpadoinkle.Html.Memo | |
(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h) => Memo (a -> b -> c -> d -> e -> f -> g -> h -> i) Source # | |
Defined in Shpadoinkle.Html.Memo | |
(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g) => Memo (a -> b -> c -> d -> e -> f -> g -> h) Source # | |
Defined in Shpadoinkle.Html.Memo | |
(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f) => Memo (a -> b -> c -> d -> e -> f -> g) Source # | |
Defined in Shpadoinkle.Html.Memo | |
(Eq a, Eq b, Eq c, Eq d, Eq e) => Memo (a -> b -> c -> d -> e -> f) Source # | |
Defined in Shpadoinkle.Html.Memo | |
(Eq a, Eq b, Eq c, Eq d) => Memo (a -> b -> c -> d -> e) Source # | |
Defined in Shpadoinkle.Html.Memo | |
(Eq a, Eq b, Eq c) => Memo (a -> b -> c -> d) Source # | |
Defined in Shpadoinkle.Html.Memo | |
(Eq a, Eq b) => Memo (a -> b -> c) Source # | |
Defined in Shpadoinkle.Html.Memo | |
Eq a => Memo (a -> b) Source # | |
Defined in Shpadoinkle.Html.Memo |
Uniadic
memo5 :: Eq a => Eq b => Eq c => Eq d => Eq e => (a -> b -> c -> d -> e -> f) -> a -> b -> c -> d -> e -> f Source #
memo6 :: Eq a => Eq b => Eq c => Eq d => Eq e => Eq f => (a -> b -> c -> d -> e -> f -> g) -> a -> b -> c -> d -> e -> f -> g Source #
memo7 :: Eq a => Eq b => Eq c => Eq d => Eq e => Eq f => Eq g => (a -> b -> c -> d -> e -> f -> g -> h) -> a -> b -> c -> d -> e -> f -> g -> h Source #
memo8 :: Eq a => Eq b => Eq c => Eq d => Eq e => Eq f => Eq g => Eq h => (a -> b -> c -> d -> e -> f -> g -> h -> i) -> a -> b -> c -> d -> e -> f -> g -> h -> i Source #
memo9 :: Eq a => Eq b => Eq c => Eq d => Eq e => Eq f => Eq g => Eq h => Eq i => (a -> b -> c -> d -> e -> f -> g -> h -> i -> j) -> a -> b -> c -> d -> e -> f -> g -> h -> i -> j Source #
Custom Equality
memo3' :: ((t1, t2, t3) -> (t1, t2, t3) -> Bool) -> (t1 -> t2 -> t3 -> a) -> t1 -> t2 -> t3 -> a Source #
memo4' :: ((t1, t2, t3, t4) -> (t1, t2, t3, t4) -> Bool) -> (t1 -> t2 -> t3 -> t4 -> a) -> t1 -> t2 -> t3 -> t4 -> a Source #
memo5' :: ((t1, t2, t3, t4, t5) -> (t1, t2, t3, t4, t5) -> Bool) -> (t1 -> t2 -> t3 -> t4 -> t5 -> a) -> t1 -> t2 -> t3 -> t4 -> t5 -> a Source #
memo6' :: ((t1, t2, t3, t4, t5, t6) -> (t1, t2, t3, t4, t5, t6) -> Bool) -> (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> a) -> t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> a Source #
memo7' :: ((t1, t2, t3, t4, t5, t6, t7) -> (t1, t2, t3, t4, t5, t6, t7) -> Bool) -> (t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> a) -> t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> a Source #