/** * Returns an effect that will be executed at most once, even if it is * evaluated multiple times. * * @tsplus getter effect/core/io/Effect once */ export function once(self: Effect): Effect> { return Ref.make(true).map((ref) => Effect.whenEffect(ref.getAndSet(false), self).unit) }