{- |
module: $Header$
description: Probability
license: MIT

maintainer: Joe Leslie-Hurd <joe@gilith.com>
stability: provisional
portability: portable
-}

module OpenTheory.Natural.Geometric
where

import qualified OpenTheory.Primitive.Natural as Natural
import qualified OpenTheory.Primitive.Random as Random

random :: Random.Random -> Natural.Natural
random =
  loop 0
  where
  {-loop :: Natural.Natural -> Random.Random -> Natural.Natural-}
    loop n r =
      let (r1, r2) = Random.split r in
      if Random.bit r1 then n else loop (n + 1) r2