How to Cache Random Number Results in Effect Typescript

Can somebody help me out with regards to caching?

import { Effect, Random } from "effect"

const getRandomNumber = Effect.fn("getRandomNumber")(function*({
  randomNumber
}: { randomNumber: number }) {
 return yield* Random.nextIntBetween(1, randomNumber)
})

const somePartOfTheCode = Effect.fn("somePartofTheCode")(function*({
  randomNumber
}: { randomNumber: number }) {
 return yield* getRandomNumber({randomNumber: 10}) // How would I get these two return the same?
})

const someOtherPartOfTheCode = Effect.fn("someOtherPartOfTheCode")(function*({
  randomNumber
}: { randomNumber: number }) {
 return yield* getRandomNumber({randomNumber: 10}) // How would I get these two return the same?
})

const program = Effect.gen(function*() {
  console.log(yield* somePartOfTheCode({randomNumber: 10}))
   console.log(yield* someOtherPartOfTheCode({randomNumber: 10}))
})

Effect.runFork(program)

(https://effect.website/play/#f0b444232f86)
Was this page helpful?