Shpadoinkle-html-0.3.0.0: A typed, template generated Html DSL, and helpers.

Safe HaskellNone
LanguageHaskell2010

Shpadoinkle.Html.Memo

Contents

Description

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
  • 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

class Memo f where Source #

Variadic ditzy memoizer that only recalls at most one thing.

memo = id

Methods

memo :: f -> f Source #

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 # 
Instance details

Defined in Shpadoinkle.Html.Memo

Methods

memo :: (a -> b -> c -> d -> e -> f -> g -> h -> i -> j) -> a -> b -> c -> d -> e -> f -> g -> h -> i -> j Source #

(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 # 
Instance details

Defined in Shpadoinkle.Html.Memo

Methods

memo :: (a -> b -> c -> d -> e -> f -> g -> h -> i) -> a -> b -> c -> d -> e -> f -> g -> h -> i Source #

(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g) => Memo (a -> b -> c -> d -> e -> f -> g -> h) Source # 
Instance details

Defined in Shpadoinkle.Html.Memo

Methods

memo :: (a -> b -> c -> d -> e -> f -> g -> h) -> a -> b -> c -> d -> e -> f -> g -> h Source #

(Eq a, Eq b, Eq c, Eq d, Eq e, Eq f) => Memo (a -> b -> c -> d -> e -> f -> g) Source # 
Instance details

Defined in Shpadoinkle.Html.Memo

Methods

memo :: (a -> b -> c -> d -> e -> f -> g) -> a -> b -> c -> d -> e -> f -> g Source #

(Eq a, Eq b, Eq c, Eq d, Eq e) => Memo (a -> b -> c -> d -> e -> f) Source # 
Instance details

Defined in Shpadoinkle.Html.Memo

Methods

memo :: (a -> b -> c -> d -> e -> f) -> a -> b -> c -> d -> e -> f Source #

(Eq a, Eq b, Eq c, Eq d) => Memo (a -> b -> c -> d -> e) Source # 
Instance details

Defined in Shpadoinkle.Html.Memo

Methods

memo :: (a -> b -> c -> d -> e) -> a -> b -> c -> d -> e Source #

(Eq a, Eq b, Eq c) => Memo (a -> b -> c -> d) Source # 
Instance details

Defined in Shpadoinkle.Html.Memo

Methods

memo :: (a -> b -> c -> d) -> a -> b -> c -> d Source #

(Eq a, Eq b) => Memo (a -> b -> c) Source # 
Instance details

Defined in Shpadoinkle.Html.Memo

Methods

memo :: (a -> b -> c) -> a -> b -> c Source #

Eq a => Memo (a -> b) Source # 
Instance details

Defined in Shpadoinkle.Html.Memo

Methods

memo :: (a -> b) -> a -> b Source #

Uniadic

memo1 :: Eq a => (a -> b) -> a -> b Source #

memo2 :: Eq a => Eq b => (a -> b -> c) -> a -> b -> c Source #

memo3 :: Eq a => Eq b => Eq c => (a -> b -> c -> d) -> a -> b -> c -> d Source #

memo4 :: Eq a => Eq b => Eq c => Eq d => (a -> b -> c -> d -> e) -> a -> b -> c -> d -> e Source #

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

memo1' :: (t -> t -> Bool) -> (t -> a) -> t -> a Source #

memo2' :: ((a1, b) -> (a1, b) -> Bool) -> (a1 -> b -> a2) -> a1 -> b -> a2 Source #

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 #

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 Source #

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 Source #