on ecd9ead help sign in
21 lines 509 B history raw
1module Effect.Random
3import Effects
5data Random : Type -> Type -> Type -> Type where
6 getRandom : Random Int Int Int
8using (m : Type -> Type)
9 instance Handler Random m where
10 handle seed getRandom k
11 = let seed' = 1664525 * seed + 1013904223 in
12 k seed' seed'
14RND : EFFECT
15RND = MkEff Int Random
17rndInt : Int -> Int -> Eff m [RND] Int
18rndInt lower upper = do v <- getRandom
19 return (v `mod` (upper - lower) + lower)