hat-2.7.0.0: Hat/Random.hs
module Hat.Random
(RandomGen(gnext,gsplit,ggenRange,snext,ssplit,sgenRange),StdGen(),gmkStdGen
,amkStdGen,hmkStdGen,Random(grandom,grandomR,grandoms,grandomRs,grandomIO
,grandomRIO,srandom,srandomR,srandoms,srandomRs,srandomIO,srandomRIO)
,ggetStdRandom,agetStdRandom,hgetStdRandom,ggetStdGen,gsetStdGen,asetStdGen
,hsetStdGen,gnewStdGen) where
import qualified Hat.PreludeBasic
import qualified Prelude
import Hat.Hack
import qualified Hat.Hat as T
import Hat.Hat (WrapVal(wrapVal))
import Hat.Prelude
import Hat.PreludeBuiltinTypes
import Hat.RandomBuiltin
import qualified System.Random as Random
import Hat.Char
class RandomGen g
where
ggenRange :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun g (T.Tuple2 Int Int))
gnext :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun g (T.Tuple2 Int g))
gsplit :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun g (T.Tuple2 g g))
ggenRange pgenRange p =
T.ufun1 a24v3v24v34genRange pgenRange p hgenRange
where
hgenRange fg p =
T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 (gminBound T.mkNoSrcPos p)
(gmaxBound T.mkNoSrcPos p)
sgenRange :: T.R (T.Fun g (T.Tuple2 Int Int))
snext :: T.R (T.Fun g (T.Tuple2 Int g))
ssplit :: T.R (T.Fun g (T.Tuple2 g g))
instance RandomGen (StdGen)
where
ggenRange pgenRange p = T.uconstUse pgenRange p sgenRange
sgenRange =
T.uconstDef T.mkRoot a31v3v31v31genRange
(\ p -> gprimStdGenGenRange T.mkNoSrcPos p)
gnext pnext p = T.uconstUse pnext p snext
snext =
T.uconstDef T.mkRoot a32v3v32v23next (\ p -> gprimStdGenNext T.mkNoSrcPos p)
gsplit psplit p = T.uconstUse psplit p ssplit
ssplit =
T.uconstDef T.mkRoot a33v3v33v25split
(\ p -> gprimStdGenSplit T.mkNoSrcPos p)
instance Read (StdGen)
where
greadsPrec preadsPrec p = T.uconstUse preadsPrec p sreadsPrec
sreadsPrec =
T.uconstDef T.mkRoot a36v3v36v33readsPrec
(\ p -> gprimStdGenReadsPrec T.mkNoSrcPos p)
instance Show (StdGen)
where
gshowsPrec pshowsPrec p = T.uconstUse pshowsPrec p sshowsPrec
sshowsPrec =
T.uconstDef T.mkRoot a39v3v39v33showsPrec
(\ p -> gprimStdGenShowsPrec T.mkNoSrcPos p)
gprimStdGenGenRange ::
T.RefSrcPos -> T.RefExp -> T.R (T.Fun StdGen (T.Tuple2 Int Int))
gprimStdGenGenRange pprimStdGenGenRange p =
T.ufun1 aprimStdGenGenRange pprimStdGenGenRange p hprimStdGenGenRange
hprimStdGenGenRange z1primStdGenGenRange kprimStdGenGenRange =
(T.fromTuple2 T.fromInt T.fromInt) kprimStdGenGenRange
(Random.genRange (toStdGen kprimStdGenGenRange z1primStdGenGenRange))
gprimStdGenNext ::
T.RefSrcPos -> T.RefExp -> T.R (T.Fun StdGen (T.Tuple2 Int StdGen))
gprimStdGenNext pprimStdGenNext p =
T.ufun1 aprimStdGenNext pprimStdGenNext p hprimStdGenNext
hprimStdGenNext z1primStdGenNext kprimStdGenNext =
(T.fromTuple2 T.fromInt fromStdGen) kprimStdGenNext
(Random.next (toStdGen kprimStdGenNext z1primStdGenNext))
gprimStdGenSplit ::
T.RefSrcPos -> T.RefExp -> T.R (T.Fun StdGen (T.Tuple2 StdGen StdGen))
gprimStdGenSplit pprimStdGenSplit p =
T.ufun1 aprimStdGenSplit pprimStdGenSplit p hprimStdGenSplit
hprimStdGenSplit z1primStdGenSplit kprimStdGenSplit =
(T.fromTuple2 fromStdGen fromStdGen) kprimStdGenSplit
(Random.split (toStdGen kprimStdGenSplit z1primStdGenSplit))
gprimStdGenReadsPrec ::
T.RefSrcPos ->
T.RefExp -> T.R (T.Fun Int (T.Fun String (T.List (T.Tuple2 StdGen String))))
gprimStdGenReadsPrec pprimStdGenReadsPrec p =
T.ufun2 aprimStdGenReadsPrec pprimStdGenReadsPrec p hprimStdGenReadsPrec
hprimStdGenReadsPrec z1primStdGenReadsPrec z2primStdGenReadsPrec
kprimStdGenReadsPrec =
(fromList (T.fromTuple2 fromStdGen fromString)) kprimStdGenReadsPrec
(Prelude.readsPrec (T.toInt kprimStdGenReadsPrec z1primStdGenReadsPrec)
(toString kprimStdGenReadsPrec z2primStdGenReadsPrec))
gprimStdGenShowsPrec ::
T.RefSrcPos ->
T.RefExp -> T.R (T.Fun Int (T.Fun StdGen (T.Fun String String)))
gprimStdGenShowsPrec pprimStdGenShowsPrec p =
T.ufun3 aprimStdGenShowsPrec pprimStdGenShowsPrec p hprimStdGenShowsPrec
hprimStdGenShowsPrec z1primStdGenShowsPrec z2primStdGenShowsPrec
z3primStdGenShowsPrec kprimStdGenShowsPrec =
fromString kprimStdGenShowsPrec
(Prelude.showsPrec (T.toInt kprimStdGenShowsPrec z1primStdGenShowsPrec)
(toStdGen kprimStdGenShowsPrec z2primStdGenShowsPrec)
(toString kprimStdGenShowsPrec z3primStdGenShowsPrec))
gmkStdGen :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int StdGen)
gmkStdGen pmkStdGen p = T.ufun1 amkStdGen pmkStdGen p hmkStdGen
hmkStdGen z1mkStdGen kmkStdGen =
fromStdGen kmkStdGen (Random.mkStdGen (T.toInt kmkStdGen z1mkStdGen))
class Random a
where
grandomR ::
RandomGen g =>
T.RefSrcPos ->
T.RefExp -> T.R (T.Fun (T.Tuple2 a a) (T.Fun g (T.Tuple2 a g)))
grandom ::
RandomGen g => T.RefSrcPos -> T.RefExp -> T.R (T.Fun g (T.Tuple2 a g))
grandomRs ::
RandomGen g =>
T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.Tuple2 a a) (T.Fun g (T.List a)))
grandoms :: RandomGen g => T.RefSrcPos -> T.RefExp -> T.R (T.Fun g (T.List a))
grandomRIO :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun (T.Tuple2 a a) (IO a))
grandomIO :: T.RefSrcPos -> T.RefExp -> T.R (IO a)
grandoms prandoms p =
T.ufun1 a68v3v70v21randoms prandoms p hrandoms
where
hrandoms fg p =
T.con2 T.mkNoSrcPos p T.Cons T.aCons (gx T.mkNoSrcPos p)
(T.uap1 T.mkNoSrcPos p (grandoms T.mkNoSrcPos p) (gg' T.mkNoSrcPos p))
where
gx px p = T.uconstUse px p sx
gg' px p = T.uconstUse px p sg'
j70v5v70v10x =
case T.uap1 T.mkNoSrcPos p (grandom T.mkNoSrcPos p) fg of
T.R (T.Tuple2 fx fg') kx -> (kx,fx,fg')
_ -> T.fatal p
sx =
T.uconstDef p a70v6v70v6x
(\ _ -> case j70v5v70v10x of (kx,fx,fg') -> fx)
sg' =
T.uconstDef p a70v8v70v9g'
(\ _ -> case j70v5v70v10x of (kx,fx,fg') -> fg')
grandomRs prandomRs p =
T.ufun2 a71v3v73v28randomRs prandomRs p hrandomRs
where
hrandomRs frange fg p =
T.con2 T.mkNoSrcPos p T.Cons T.aCons (gx T.mkNoSrcPos p)
(T.uap2 T.mkNoSrcPos p (grandomRs T.mkNoSrcPos p) frange
(gg' T.mkNoSrcPos p))
where
gx px p = T.uconstUse px p sx
gg' px p = T.uconstUse px p sg'
j73v5v73v10x =
case T.uap2 T.mkNoSrcPos p (grandomR T.mkNoSrcPos p) frange fg of
T.R (T.Tuple2 fx fg') kx -> (kx,fx,fg')
_ -> T.fatal p
sx =
T.uconstDef p a73v6v73v6x
(\ _ -> case j73v5v73v10x of (kx,fx,fg') -> fx)
sg' =
T.uconstDef p a73v8v73v9g'
(\ _ -> case j73v5v73v10x of (kx,fx,fg') -> fg')
grandomIO prandomIO p = T.uconstUse prandomIO p srandomIO
srandomIO =
T.uconstDef T.mkRoot a74v3v74v39randomIO
(\ p -> T.uwrapForward p (hgetStdRandom (grandom T.mkNoSrcPos p) p))
grandomRIO prandomRIO p =
T.ufun1 a75v3v75v47randomRIO prandomRIO p hrandomRIO
where
hrandomRIO frange p =
T.uwrapForward p
(hgetStdRandom (T.uap1 T.mkNoSrcPos p (grandomR T.mkNoSrcPos p) frange)
p)
srandomR :: RandomGen g => T.R (T.Fun (T.Tuple2 a a) (T.Fun g (T.Tuple2 a g)))
srandom :: RandomGen g => T.R (T.Fun g (T.Tuple2 a g))
srandomRs :: RandomGen g => T.R (T.Fun (T.Tuple2 a a) (T.Fun g (T.List a)))
srandoms :: RandomGen g => T.R (T.Fun g (T.List a))
srandomRIO :: T.R (T.Fun (T.Tuple2 a a) (IO a))
srandomIO :: T.R (IO a)
instance Random (Int)
where
grandomR prandomR p =
T.ufun2 a78v3v78v66randomR prandomR p hrandomR
where
hrandomR (T.R (T.Tuple2 fa fb) _) fg p =
T.uwrapForward p
(hrandomIvalInteger
(T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2
(T.uap1 T.mkNoSrcPos p (gtoInteger T.mkNoSrcPos p) fa)
(T.uap1 T.mkNoSrcPos p (gtoInteger T.mkNoSrcPos p) fb)) fg p)
hrandomR _ _ p = T.fatal p
grandom prandom p =
T.ufun1 a79v3v79v49random prandom p hrandom
where
hrandom fg p =
T.uap2 T.mkNoSrcPos p (grandomR T.mkNoSrcPos p)
(T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 (gminBound T.mkNoSrcPos p)
(gmaxBound T.mkNoSrcPos p)) fg
instance Random (Integer)
where
grandomR prandomR p =
T.ufun2 a82v3v82v43randomR prandomR p hrandomR
where
hrandomR fival fg p = T.uwrapForward p (hrandomIvalInteger fival fg p)
grandom prandom p =
T.ufun1 a83v3v83v83random prandom p hrandom
where
hrandom fg p =
T.uap2 T.mkNoSrcPos p (grandomR T.mkNoSrcPos p)
(T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2
(T.uap1 T.mkNoSrcPos p (gtoInteger T.mkNoSrcPos p)
(gminBound T.mkNoSrcPos p :: T.R Int))
(T.uap1 T.mkNoSrcPos p (gtoInteger T.mkNoSrcPos p)
(gmaxBound T.mkNoSrcPos p :: T.R Int))) fg
instance Random (Float)
where
grandom prandom p =
T.ufun1 a86v3v86v63random prandom p hrandom
where
hrandom fg p =
T.uwrapForward p
(hrandomIvalDouble
(T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2
(T.uap1 T.mkNoSrcPos p
(Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
(T.conInteger T.mkNoSrcPos p 0)
:: T.R Double)
(T.uap1 T.mkNoSrcPos p
(Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
(T.conInteger T.mkNoSrcPos p 1))) (grealToFrac T.mkNoSrcPos p) fg
p)
grandomR prandomR p =
T.ufun2 a87v3v87v78randomR prandomR p hrandomR
where
hrandomR (T.R (T.Tuple2 fa fb) _) fg p =
T.uwrapForward p
(hrandomIvalDouble
(T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2
(T.uap1 T.mkNoSrcPos p (grealToFrac T.mkNoSrcPos p) fa)
(T.uap1 T.mkNoSrcPos p (grealToFrac T.mkNoSrcPos p) fb))
(grealToFrac T.mkNoSrcPos p) fg p)
hrandomR _ _ p = T.fatal p
instance Random (Double)
where
grandomR prandomR p =
T.ufun2 a90v3v90v45randomR prandomR p hrandomR
where
hrandomR fival fg p =
T.uwrapForward p (hrandomIvalDouble fival (gid T.mkNoSrcPos p) fg p)
grandom prandom p =
T.ufun1 a91v3v91v42random prandom p hrandom
where
hrandom fg p =
T.uap2 T.mkNoSrcPos p (grandomR T.mkNoSrcPos p)
(T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2
(T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
(T.conInteger T.mkNoSrcPos p 0)
:: T.R Double)
(T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
(T.conInteger T.mkNoSrcPos p 1))) fg
instance Random (Bool)
where
grandomR prandomR p =
T.ufun2 a94v3v105v22randomR prandomR p hrandomR
where
hrandomR (T.R (T.Tuple2 fa fb) _) fg p =
T.uccase T.mkNoSrcPos p
(let
v95v5v97v33v1 (T.R (T.Tuple2 fx fg) _) p =
T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2
(T.uwrapForward p (hint2Bool fx p)) fg
v95v5v97v33v1 _ p = T.fatal p in (v95v5v97v33v1))
(T.uwrapForward p
(hrandomIvalInteger
(T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2
(T.uwrapForward p (hbool2Integer fa p))
(T.uwrapForward p (hbool2Integer fb p))) fg p))
where
gbool2Integer :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Bool Integer)
hbool2Integer :: (T.R Bool) -> T.RefExp -> T.R Integer
gbool2Integer pbool2Integer p =
T.ufun1 a100v5v101v26bool2Integer pbool2Integer p hbool2Integer
abool2Integer = a100v5v101v26bool2Integer
hbool2Integer (T.R False _) p =
T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
(T.conInteger T.mkNoSrcPos p 0)
hbool2Integer (T.R True _) p =
T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
(T.conInteger T.mkNoSrcPos p 1)
hbool2Integer _ p = T.fatal p
gint2Bool :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int Bool)
hint2Bool :: (T.R Int) -> T.RefExp -> T.R Bool
gint2Bool pint2Bool p =
T.ufun1 a104v5v105v22int2Bool pint2Bool p hint2Bool
aint2Bool = a104v5v105v22int2Bool
hint2Bool fv104v14v104v14n p =
T.ucguard
(T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p)
fv104v14v104v14n
(T.uap1 T.mkNoSrcPos p
(Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
(T.conInteger T.mkNoSrcPos p 0))) (h p)
(y1int2Bool fv104v14v104v14n p)
where
h p = T.con0 T.mkNoSrcPos p False aFalse
h p = y1int2Bool fv104v14v104v14n p
hint2Bool fv104v14v104v14n p = y1int2Bool fv104v14v104v14n p
y1int2Bool _ p = T.con0 T.mkNoSrcPos p True aTrue
hrandomR _ _ p = T.fatal p
grandom prandom p =
T.ufun1 a107v3v107v42random prandom p hrandom
where
hrandom fg p =
T.uap2 T.mkNoSrcPos p (grandomR T.mkNoSrcPos p)
(T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 (gminBound T.mkNoSrcPos p)
(gmaxBound T.mkNoSrcPos p)) fg
instance Random (Char)
where
grandomR prandomR p =
T.ufun2 a110v3v112v27randomR prandomR p hrandomR
where
hrandomR (T.R (T.Tuple2 fa fb) _) fg p =
T.uccase T.mkNoSrcPos p
(let
v111v7v112v27v1 (T.R (T.Tuple2 fx fg) _) p =
T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2
(T.uap1 T.mkNoSrcPos p (gchr T.mkNoSrcPos p) fx) fg
v111v7v112v27v1 _ p = T.fatal p in (v111v7v112v27v1))
(T.uwrapForward p
(hrandomIvalInteger
(T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2
(T.uap1 T.mkNoSrcPos p (gtoInteger T.mkNoSrcPos p)
(T.uap1 T.mkNoSrcPos p (gord T.mkNoSrcPos p) fa))
(T.uap1 T.mkNoSrcPos p (gtoInteger T.mkNoSrcPos p)
(T.uap1 T.mkNoSrcPos p (gord T.mkNoSrcPos p) fb))) fg p))
hrandomR _ _ p = T.fatal p
grandom prandom p =
T.ufun1 a113v3v113v42random prandom p hrandom
where
hrandom fg p =
T.uap2 T.mkNoSrcPos p (grandomR T.mkNoSrcPos p)
(T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 (gminBound T.mkNoSrcPos p)
(gmaxBound T.mkNoSrcPos p)) fg
grandomIvalInteger ::
(RandomGen g,Num a) =>
T.RefSrcPos ->
T.RefExp -> T.R (T.Fun (T.Tuple2 Integer Integer) (T.Fun g (T.Tuple2 a g)))
hrandomIvalInteger ::
(RandomGen g,Num a) =>
(T.R (T.Tuple2 Integer Integer)) -> (T.R g) -> T.RefExp -> T.R (T.Tuple2 a g)
grandomIvalInteger prandomIvalInteger p =
T.ufun2 arandomIvalInteger prandomIvalInteger p hrandomIvalInteger
hrandomIvalInteger (T.R (T.Tuple2 fl fh) _) frng p =
T.ucguard (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !> p) fl fh)
(T.uwrapForward p
(hrandomIvalInteger (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fh fl) frng
p))
(T.ucguard (gotherwise T.mkNoSrcPos p)
(T.uccase T.mkNoSrcPos p
(let
v120v16v120v83v1 (T.R (T.Tuple2 fv frng') _) p =
T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2
(T.uap1 T.mkNoSrcPos p (gfromInteger T.mkNoSrcPos p)
(T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p) fl
(T.uap2 T.mkNoSrcPos p (gmod T.mkNoSrcPos p) fv
(gk T.mkNoSrcPos p)))) frng'
v120v16v120v83v1 _ p = T.fatal p in (v120v16v120v83v1))
(T.uwrapForward p
(hf (gn T.mkNoSrcPos p)
(T.uap1 T.mkNoSrcPos p
(Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
(T.conInteger T.mkNoSrcPos p 1)) frng p))) (T.fatal p))
where
gk pk p = T.uconstUse pk p sk
sk =
T.uconstDef p a122v8v122v20k
(\ p ->
T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)
(T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !- p) fh fl)
(T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
(T.conInteger T.mkNoSrcPos p 1)))
gb pb p = T.uconstUse pb p sb
sb =
T.uconstDef p a123v8v123v21b
(\ p ->
T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
(T.conInteger T.mkNoSrcPos p 2147483561))
gn pn p = T.uconstUse pn p sn
sn =
T.uconstDef p a124v8v124v23n
(\ p ->
T.uwrapForward p (hiLogBase (gb T.mkNoSrcPos p) (gk T.mkNoSrcPos p) p))
gf pf p = T.ufun3 a126v8v131v42f pf p hf
af = a126v8v131v42f
hf fv126v10v126v10n facc fg p =
T.ucguard
(T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos Hat.Prelude.!== p) fv126v10v126v10n
(T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
(T.conInteger T.mkNoSrcPos p 0))) (h facc fg p)
(y1f fv126v10v126v10n facc fg p)
where
h facc fg p = T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 facc fg
h _ _ p = y1f fv126v10v126v10n facc fg p
hf fv126v10v126v10n facc fg p = y1f fv126v10v126v10n facc fg p
y1f fn facc fg p =
let
gx px p = T.uconstUse px p sx
gg' px p = T.uconstUse px p sg'
j129v12v129v17x =
case T.uap1 T.mkNoSrcPos p (gnext T.mkNoSrcPos p) fg of
T.R (T.Tuple2 fx fg') kx -> (kx,fx,fg')
_ -> T.fatal p
sx =
T.uconstDef p a129v13v129v13x
(\ _ -> case j129v12v129v17x of (kx,fx,fg') -> fx)
sg' =
T.uconstDef p a129v15v129v16g'
(\ _ -> case j129v12v129v17x of (kx,fx,fg') -> fg') in
(T.uwrapForward p
(hf
(T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !- p) fn
(T.uap1 T.mkNoSrcPos p
(Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
(T.conInteger T.mkNoSrcPos p 1)))
(T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)
(T.uap1 T.mkNoSrcPos p (gfromInt T.mkNoSrcPos p)
(gx T.mkNoSrcPos p))
(T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p) facc
(gb T.mkNoSrcPos p))) (gg' T.mkNoSrcPos p) p))
hrandomIvalInteger _ _ p = T.fatal p
grandomIvalDouble ::
(RandomGen g,Fractional a) =>
T.RefSrcPos ->
T.RefExp ->
T.R
(T.Fun (T.Tuple2 Double Double)
(T.Fun (T.Fun Double a) (T.Fun g (T.Tuple2 a g))))
hrandomIvalDouble ::
(RandomGen g,Fractional a) =>
(T.R (T.Tuple2 Double Double)) ->
(T.R (T.Fun Double a)) -> (T.R g) -> T.RefExp -> T.R (T.Tuple2 a g)
grandomIvalDouble prandomIvalDouble p =
T.ufun3 arandomIvalDouble prandomIvalDouble p hrandomIvalDouble
hrandomIvalDouble (T.R (T.Tuple2 fl fh) _) ffromDouble frng p =
T.ucguard (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !> p) fl fh)
(T.uwrapForward p
(hrandomIvalDouble (T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2 fh fl)
ffromDouble frng p))
(T.ucguard (gotherwise T.mkNoSrcPos p)
(T.uccase T.mkNoSrcPos p
(let
v137v8v145v28v1 (T.R (T.Tuple2 fx frng') _) p =
let
gscaled_x pscaled_x p = T.uconstUse pscaled_x p sscaled_x
sscaled_x =
T.uconstDef p a140v14v143v36scaled_x
(\ p ->
T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)
(T.uap1 T.mkNoSrcPos p ffromDouble
(T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !/ p)
(T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p) fl fh)
(T.uap1 T.mkNoSrcPos p
(Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
(T.conInteger T.mkNoSrcPos p 2))))
(T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !* p)
(T.uap1 T.mkNoSrcPos p ffromDouble
(T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !/ p)
(T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !- p) fh fl)
(T.uap1 T.mkNoSrcPos p (grealToFrac T.mkNoSrcPos p)
(gintRange T.mkNoSrcPos p))))
(T.uap1 T.mkNoSrcPos p (gfromIntegral T.mkNoSrcPos p)
(fx :: T.R Int)))) in
(T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2
(gscaled_x T.mkNoSrcPos p) frng')
v137v8v145v28v1 _ p = T.fatal p in (v137v8v145v28v1))
(T.uwrapForward p
(hrandomIvalInteger
(T.con2 T.mkNoSrcPos p T.Tuple2 T.aTuple2
(T.uap1 T.mkNoSrcPos p (gtoInteger T.mkNoSrcPos p)
(gminBound T.mkNoSrcPos p :: T.R Int))
(T.uap1 T.mkNoSrcPos p (gtoInteger T.mkNoSrcPos p)
(gmaxBound T.mkNoSrcPos p :: T.R Int))) frng p))) (T.fatal p))
hrandomIvalDouble _ _ _ p = T.fatal p
gfromInt :: Num a => T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int a)
sfromInt :: Num a => T.R (T.Fun Int a)
gfromInt pfromInt p = T.uconstUse pfromInt p sfromInt
sfromInt =
T.uconstDef T.mkRoot afromInt
(\ p ->
T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !. p) (gfromInteger T.mkNoSrcPos p)
(gtoInteger T.mkNoSrcPos p))
gintRange :: T.RefSrcPos -> T.RefExp -> T.R Integer
sintRange :: T.R Integer
gintRange pintRange p = T.uconstUse pintRange p sintRange
sintRange =
T.uconstDef T.mkRoot aintRange
(\ p ->
T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !- p)
(T.uap1 T.mkNoSrcPos p (gtoInteger T.mkNoSrcPos p)
(gmaxBound T.mkNoSrcPos p :: T.R Int))
(T.uap1 T.mkNoSrcPos p (gtoInteger T.mkNoSrcPos p)
(gminBound T.mkNoSrcPos p :: T.R Int)))
giLogBase ::
T.RefSrcPos -> T.RefExp -> T.R (T.Fun Integer (T.Fun Integer Integer))
hiLogBase :: (T.R Integer) -> (T.R Integer) -> T.RefExp -> T.R Integer
giLogBase piLogBase p = T.ufun2 aiLogBase piLogBase p hiLogBase
hiLogBase fb fi p =
T.ucif p (T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !< p) fi fb)
(T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
(T.conInteger T.mkNoSrcPos p 1))
(T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !+ p)
(T.uap1 T.mkNoSrcPos p (Hat.PreludeBasic.gfromInteger T.mkNoSrcPos p)
(T.conInteger T.mkNoSrcPos p 1))
(T.uwrapForward p
(hiLogBase fb (T.uap2 T.mkNoSrcPos p (gdiv T.mkNoSrcPos p) fi fb) p)))
gnewStdGen :: T.RefSrcPos -> T.RefExp -> T.R (IO StdGen)
gnewStdGen pnewStdGen p = T.uconstUse pnewStdGen p snewStdGen
snewStdGen =
T.uconstDef T.mkRoot anewStdGen
(\ p -> (T.fromIO fromStdGen) p Random.newStdGen)
gsetStdGen :: T.RefSrcPos -> T.RefExp -> T.R (T.Fun StdGen (IO T.Tuple0))
gsetStdGen psetStdGen p = T.ufun1 asetStdGen psetStdGen p hsetStdGen
hsetStdGen z1setStdGen ksetStdGen =
(T.fromIO T.fromTuple0) ksetStdGen
(Random.setStdGen (toStdGen ksetStdGen z1setStdGen))
ggetStdGen :: T.RefSrcPos -> T.RefExp -> T.R (IO StdGen)
ggetStdGen pgetStdGen p = T.uconstUse pgetStdGen p sgetStdGen
sgetStdGen =
T.uconstDef T.mkRoot agetStdGen
(\ p -> (T.fromIO fromStdGen) p Random.getStdGen)
ggetStdRandom ::
T.RefSrcPos ->
T.RefExp -> T.R (T.Fun (T.Fun StdGen (T.Tuple2 a StdGen)) (IO a))
ggetStdRandom pgetStdRandom p =
T.ufun1 agetStdRandom pgetStdRandom p hgetStdRandom
hgetStdRandom z1getStdRandom kgetStdRandom =
(T.fromIO T.fromId) kgetStdRandom
(Random.getStdRandom
((toFun fromStdGen (T.toTuple2 T.toId toStdGen)) kgetStdRandom
z1getStdRandom))
tRandom = T.mkModule "Random" "Random.hs" Prelude.False
aprimStdGenGenRange =
T.mkVariable tRandom 410001 420041 3 1 "primStdGenGenRange" Prelude.False
aprimStdGenNext =
T.mkVariable tRandom 430001 440040 3 1 "primStdGenNext" Prelude.False
aprimStdGenSplit =
T.mkVariable tRandom 450001 460044 3 1 "primStdGenSplit" Prelude.False
aprimStdGenReadsPrec =
T.mkVariable tRandom 470001 480042 3 2 "primStdGenReadsPrec" Prelude.False
aprimStdGenShowsPrec =
T.mkVariable tRandom 490001 500057 3 3 "primStdGenShowsPrec" Prelude.False
amkStdGen = T.mkVariable tRandom 530001 540026 3 1 "mkStdGen" Prelude.False
arandomIvalInteger =
T.mkVariable tRandom 1180001 1310042 3 2 "randomIvalInteger" Prelude.False
arandomIvalDouble =
T.mkVariable tRandom 1340001 1450028 3 3 "randomIvalDouble" Prelude.False
afromInt = T.mkVariable tRandom 1480001 1480033 3 0 "fromInt" Prelude.False
aintRange = T.mkVariable tRandom 1510001 1510064 3 0 "intRange" Prelude.False
aiLogBase = T.mkVariable tRandom 1540001 1540061 3 2 "iLogBase" Prelude.False
anewStdGen = T.mkVariable tRandom 1580001 1590019 3 0 "newStdGen" Prelude.False
asetStdGen = T.mkVariable tRandom 1600001 1610029 3 1 "setStdGen" Prelude.False
agetStdGen = T.mkVariable tRandom 1620001 1630019 3 0 "getStdGen" Prelude.False
agetStdRandom =
T.mkVariable tRandom 1640001 1650046 3 1 "getStdRandom" Prelude.False
a24v3v24v34genRange =
T.mkVariable tRandom 240003 240034 3 1 "genRange" Prelude.False
a31v3v31v31genRange =
T.mkVariable tRandom 310003 310031 3 0 "genRange" Prelude.False
a32v3v32v23next = T.mkVariable tRandom 320003 320023 3 0 "next" Prelude.False
a33v3v33v25split = T.mkVariable tRandom 330003 330025 3 0 "split" Prelude.False
a36v3v36v33readsPrec =
T.mkVariable tRandom 360003 360033 3 0 "readsPrec" Prelude.False
a39v3v39v33showsPrec =
T.mkVariable tRandom 390003 390033 3 0 "showsPrec" Prelude.False
a68v3v70v21randoms =
T.mkVariable tRandom 680003 700021 3 1 "randoms" Prelude.False
a71v3v73v28randomRs =
T.mkVariable tRandom 710003 730028 3 2 "randomRs" Prelude.False
a74v3v74v39randomIO =
T.mkVariable tRandom 740003 740039 3 0 "randomIO" Prelude.False
a75v3v75v47randomRIO =
T.mkVariable tRandom 750003 750047 3 1 "randomRIO" Prelude.False
a78v3v78v66randomR =
T.mkVariable tRandom 780003 780066 3 2 "randomR" Prelude.False
a79v3v79v49random =
T.mkVariable tRandom 790003 790049 3 1 "random" Prelude.False
a82v3v82v43randomR =
T.mkVariable tRandom 820003 820043 3 2 "randomR" Prelude.False
a83v3v83v83random =
T.mkVariable tRandom 830003 830083 3 1 "random" Prelude.False
a86v3v86v63random =
T.mkVariable tRandom 860003 860063 3 1 "random" Prelude.False
a87v3v87v78randomR =
T.mkVariable tRandom 870003 870078 3 2 "randomR" Prelude.False
a90v3v90v45randomR =
T.mkVariable tRandom 900003 900045 3 2 "randomR" Prelude.False
a91v3v91v42random =
T.mkVariable tRandom 910003 910042 3 1 "random" Prelude.False
a94v3v105v22randomR =
T.mkVariable tRandom 940003 1050022 3 2 "randomR" Prelude.False
a107v3v107v42random =
T.mkVariable tRandom 1070003 1070042 3 1 "random" Prelude.False
a110v3v112v27randomR =
T.mkVariable tRandom 1100003 1120027 3 2 "randomR" Prelude.False
a113v3v113v42random =
T.mkVariable tRandom 1130003 1130042 3 1 "random" Prelude.False
a70v6v70v6x = T.mkVariable tRandom 700006 700006 3 0 "x" Prelude.True
a70v8v70v9g' = T.mkVariable tRandom 700008 700009 3 0 "g'" Prelude.True
a73v6v73v6x = T.mkVariable tRandom 730006 730006 3 0 "x" Prelude.True
a73v8v73v9g' = T.mkVariable tRandom 730008 730009 3 0 "g'" Prelude.True
a100v5v101v26bool2Integer =
T.mkVariable tRandom 1000005 1010026 3 1 "bool2Integer" Prelude.True
a104v5v105v22int2Bool =
T.mkVariable tRandom 1040005 1050022 3 1 "int2Bool" Prelude.True
a122v8v122v20k = T.mkVariable tRandom 1220008 1220020 3 0 "k" Prelude.True
a123v8v123v21b = T.mkVariable tRandom 1230008 1230021 3 0 "b" Prelude.True
a124v8v124v23n = T.mkVariable tRandom 1240008 1240023 3 0 "n" Prelude.True
a126v8v131v42f = T.mkVariable tRandom 1260008 1310042 3 3 "f" Prelude.True
a129v13v129v13x = T.mkVariable tRandom 1290013 1290013 3 0 "x" Prelude.True
a129v15v129v16g' = T.mkVariable tRandom 1290015 1290016 3 0 "g'" Prelude.True
a140v14v143v36scaled_x =
T.mkVariable tRandom 1400014 1430036 3 0 "scaled_x" Prelude.True