Back to Fpinscala

08.Answer

answerkey/state/08.answer.md

latest292 B
Original Source
scala
def flatMap[A, B](r: Rand[A])(f: A => Rand[B]): Rand[B] =
  rng0 =>
    val (a, rng1) = r(rng0)
    f(a)(rng1)

def nonNegativeLessThan(n: Int): Rand[Int] =
  flatMap(nonNegativeInt): i =>
    val mod = i % n
    if i + (n-1) - mod >= 0 then unit(mod) else nonNegativeLessThan(n)