A type-class for F[A] suspendable applicatives
whose evaluation can be memoized, along with a guarantee
that the side-effects only happen once.
The memoize operation takes an F[_] instance and
returns a new F that guarantees that its evaluation and
all related side-effects only happen once, with the results
to be reused on subsequent evaluations.