/** * Returns an effect that, if evaluated, will return the lazily computed * result of this effect. * * @tsplus getter effect/core/io/Effect memoize */ export function memoize(self: Effect): Effect> { return Do(($) => { const deferred = $(Deferred.make()) const complete = $(self.intoDeferred(deferred).once) return complete.zipRight(deferred.await) }) }