~/bend-docscommunity

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.