generate.bend relies on unsafe/foreign
raw source on the hub · import bend-kit-property@0.2.0.0/generate.bend as Generate
Pure generators: each takes a Rand.Rng and returns a value beside the next state.
3 imports
import Base import bend-kit-random@0.1.0.1/random.bend as Rand import bend-kit-bytes@0.3.1.0/bytes.bend as Bytes
Definitions
def cap source · line 13 · raw
@+n:U32 -> U32
n, capped at 1024.
def u32 source · line 17 · raw
@r:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(U32, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
A uniform U32.
def u32.range source · line 21 · raw
@+lo:U32 -> @hi:U32 -> @r:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(U32, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
A uniform U32 in [lo, hi); lo when hi <= lo + 1.
def size source · line 25 · raw
@+max:U32 -> @r:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(U32, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
A uniform size in [0, min(max, 1024)].
def nat.fin source · line 28 · raw
@xr:Pair(U32, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng) -> Pair(Nat, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
def nat source · line 33 · raw
@+max:U32 -> @r:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(Nat, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
A uniform Nat in [0, min(max, 1024)].
def char.fin source · line 36 · raw
@xr:Pair(U32, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng) -> Pair(Char, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
def char source · line 41 · raw
@r:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(Char, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
A printable ASCII char, ' ' (32) through '~' (126).
def string.go source · line 45 · raw
@n:Nat -> @acc:String -> @cr:Pair(Char, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng) -> Pair(String, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
n + 1 chars prepended to acc; cr holds the next char.
def string.of source · line 55 · raw
@n:Nat -> @r:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(String, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
Exactly n printable ASCII chars.
def string.fin source · line 62 · raw
@nr:Pair(Nat, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng) -> Pair(String, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
def string source · line 67 · raw
@+max:U32 -> @r:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(String, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
Printable ASCII of length in [0, min(max, 1024)].
def bytes.go source · line 71 · raw
@n:Nat -> @b:0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes -> @+i:U32 -> @xr:Pair(U32, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng) -> Pair(0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
Byte i and the n bytes after it; xr holds byte i (Bytes.set keeps its low 8 bits).
def bytes.start source · line 80 · raw
@n:Nat -> @+len:U32 -> @r:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
def bytes.of source · line 88 · raw
@+len:U32 -> @r:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
Exactly min(len, 1024) uniform octets, one draw each.
def bytes.fin source · line 92 · raw
@nr:Pair(U32, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng) -> Pair(0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
def bytes source · line 97 · raw
@+max:U32 -> @r:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(0xb7603dcfa1d7f60d01e06c928738cc73/bytes.Bytes, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
Uniform octets, length in [0, min(max, 1024)].
Templates
template list.go source · line 101 · raw
@-T:Data -> @-gen:(@_:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(T, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)) -> @n:Nat -> @acc:List<&2, T> -> @hr:Pair(T, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng) -> Pair(List<&2, T>, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
n + 1 items prepended to acc; hr holds the next item.
template list.of source · line 111 · raw
@-T:Data -> @-gen:(@_:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(T, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)) -> @n:Nat -> @r:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(List<&2, T>, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
Exactly n items from gen. The first draw ends up last; replay is unaffected.
template list.fin source · line 118 · raw
@-T:Data -> @-gen:(@_:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(T, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)) -> @nr:Pair(Nat, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng) -> Pair(List<&2, T>, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
template list source · line 123 · raw
@-T:Data -> @-gen:(@_:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(T, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)) -> @+max:U32 -> @r:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(List<&2, T>, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
Items from gen, length in [0, min(max, 1024)].
template maybe.some source · line 126 · raw
@-T:Data -> @hr:Pair(T, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng) -> Pair(Maybe<&2, T>, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
template maybe.if source · line 130 · raw
@-T:Data -> @-gen:(@_:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(T, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)) -> @none:Bool -> @r:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(Maybe<&2, T>, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
template maybe.pick source · line 137 · raw
@-T:Data -> @-gen:(@_:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(T, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)) -> @xr:Pair(U32, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng) -> Pair(Maybe<&2, T>, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
template maybe source · line 142 · raw
@-T:Data -> @-gen:(@_:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(T, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)) -> @r:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(Maybe<&2, T>, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
None one time in four, else Some from gen.
template map.fin source · line 145 · raw
@-A:Type -> @-B:Type -> @-f:(@_:A -> B) -> @ar:Pair(A, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng) -> Pair(B, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
template map source · line 150 · raw
@-A:Type -> @-B:Type -> @-f:(@_:A -> B) -> @-gen:(@_:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(A, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)) -> @r:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(B, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
gen's value through f.
template bind.fin source · line 153 · raw
@-A:Type -> @-B:Type -> @-k:(@_:A -> @_:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(B, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)) -> @ar:Pair(A, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng) -> Pair(B, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
template bind source · line 158 · raw
@-A:Type -> @-B:Type -> @-gen:(@_:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(A, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)) -> @-k:(@_:A -> @_:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(B, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)) -> @r:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(B, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
gen's value picks the next generator: bind(~Nat, ~List<&2, U32>, ~(r => Gen.nat(8, r)), ~(n => r => Gen.list.of(~U32, ~Gen.u32, n, r)), r).
template pair.snd source · line 161 · raw
@-A:Type -> @-B:Type -> @a:A -> @br:Pair(B, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng) -> Pair(Pair(A, B), 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
template pair.fst source · line 165 · raw
@-A:Type -> @-B:Type -> @-gb:(@_:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(B, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)) -> @ar:Pair(A, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng) -> Pair(Pair(A, B), 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
template pair source · line 170 · raw
@-A:Type -> @-B:Type -> @-ga:(@_:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(A, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)) -> @-gb:(@_:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(B, 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)) -> @r:0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng -> Pair(Pair(A, B), 0x46b9429cbffa7a8c1111ce19c60a3d6a/random.Rng)
ga's value then gb's, drawn in that order.