5data Random : Effect where
6 getRandom : { Integer } Random Integer
7 setSeed : Integer -> { Integer } Random ()
9using (m : Type -> Type)
10 instance Handler Random m where
11 handle seed getRandom k
12 = let seed' = (1664525 * seed + 1013904223) `prim__sremBigInt` (pow 2 32) in
14 handle seed (setSeed n) k = k () n
17RND = MkEff Integer Random
19rndInt : Integer -> Integer -> { [RND] } Eff m Integer
20rndInt lower upper = do v <- getRandom
21 return (v `prim__sremBigInt` (upper - lower) + lower)
23rndFin : (k : Nat) -> { [RND] } Eff m (Fin (S k))
24rndFin k = do let v = !getRandom `prim__sremBigInt` (cast k)
26 where toFin : Integer -> Fin (S k)
27 toFin x = case integerToFin x (S k) of
29 Nothing => toFin (assert_smaller x (x - cast (S k)))
31srand : Integer -> { [RND] } Eff m ()
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list