mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 11:15:31 -05:00
17 lines
No EOL
29 KiB
HTML
17 lines
No EOL
29 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCRandom (containers.CCRandom)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.1.0"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">containers</a> » CCRandom</nav><header class="odoc-preamble"><h1>Module <code><span>CCRandom</span></code></h1><p>Random Generators</p></header><nav class="odoc-toc"><ul><li><a href="#applicative">Applicative</a></li><li><a href="#run-a-generator">Run a generator</a></li></ul></nav><div class="odoc-content"><div class="odoc-include"><div class="spec-doc"><p><a href="https://caml.inria.fr/pub/docs/manual-ocaml/libref/Random.html">Documentation for the standard Random module</a></p></div><details open="open"><summary class="spec include"><code><span><span class="keyword">include</span> <span class="keyword">module</span> <span class="keyword">type</span> <span class="keyword">of</span> <span class="keyword">struct</span> <span class="keyword">include</span> <span class="xref-unresolved">Stdlib</span>.Random <span class="keyword">end</span></span></code></summary><div class="odoc-spec"><div class="spec value" id="val-init" class="anchored"><a href="#val-init" class="anchor"></a><code><span><span class="keyword">val</span> init : <span>int <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-full_init" class="anchored"><a href="#val-full_init" class="anchor"></a><code><span><span class="keyword">val</span> full_init : <span><span>int array</span> <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-self_init" class="anchored"><a href="#val-self_init" class="anchor"></a><code><span><span class="keyword">val</span> self_init : <span>unit <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-bits" class="anchored"><a href="#val-bits" class="anchor"></a><code><span><span class="keyword">val</span> bits : <span>unit <span class="arrow">-></span></span> int</span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-full_int" class="anchored"><a href="#val-full_int" class="anchor"></a><code><span><span class="keyword">val</span> full_int : <span>int <span class="arrow">-></span></span> int</span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-int32" class="anchored"><a href="#val-int32" class="anchor"></a><code><span><span class="keyword">val</span> int32 : <span><span class="xref-unresolved">Stdlib</span>.Int32.t <span class="arrow">-></span></span> <span class="xref-unresolved">Stdlib</span>.Int32.t</span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-nativeint" class="anchored"><a href="#val-nativeint" class="anchor"></a><code><span><span class="keyword">val</span> nativeint : <span><span class="xref-unresolved">Stdlib</span>.Nativeint.t <span class="arrow">-></span></span> <span class="xref-unresolved">Stdlib</span>.Nativeint.t</span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-int64" class="anchored"><a href="#val-int64" class="anchor"></a><code><span><span class="keyword">val</span> int64 : <span><span class="xref-unresolved">Stdlib</span>.Int64.t <span class="arrow">-></span></span> <span class="xref-unresolved">Stdlib</span>.Int64.t</span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-bool" class="anchored"><a href="#val-bool" class="anchor"></a><code><span><span class="keyword">val</span> bool : <span>unit <span class="arrow">-></span></span> bool</span></code></div></div><div class="odoc-spec"><div class="spec module" id="module-State" class="anchored"><a href="#module-State" class="anchor"></a><code><span><span class="keyword">module</span> State</span><span> = <span class="xref-unresolved">Stdlib__Random</span>.State</span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-get_state" class="anchored"><a href="#val-get_state" class="anchor"></a><code><span><span class="keyword">val</span> get_state : <span>unit <span class="arrow">-></span></span> <span class="xref-unresolved">State</span>.t</span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-set_state" class="anchored"><a href="#val-set_state" class="anchor"></a><code><span><span class="keyword">val</span> set_state : <span><span class="xref-unresolved">State</span>.t <span class="arrow">-></span></span> unit</span></code></div></div></details></div><div class="odoc-spec"><div class="spec type" id="type-state" class="anchored"><a href="#type-state" class="anchor"></a><code><span><span class="keyword">type</span> state</span><span> = <span class="xref-unresolved">Stdlib</span>.Random.State.t</span></code></div></div><div class="odoc-spec"><div class="spec type" id="type-t" class="anchored"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a t</span></span><span> = <span><a href="#type-state">state</a> <span class="arrow">-></span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p>Random generator for values of type <code>'a</code>.</p></div></div><div class="odoc-spec"><div class="spec type" id="type-random_gen" class="anchored"><a href="#type-random_gen" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a random_gen</span></span><span> = <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-return" class="anchored"><a href="#val-return" class="anchor"></a><code><span><span class="keyword">val</span> return : <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>return x</code> is the generator that always returns <code>x</code>. Example: <code>let random_int = return 4 (* fair dice roll *)</code>.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-flat_map" class="anchored"><a href="#val-flat_map" class="anchor"></a><code><span><span class="keyword">val</span> flat_map : <span><span>( <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="#type-t">t</a></span> )</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>flat_map f g st</code> is <code>f (g st) st</code>.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-(>>=)" class="anchored"><a href="#val-(>>=)" class="anchor"></a><code><span><span class="keyword">val</span> (>>=) : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>( <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="#type-t">t</a></span> )</span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Monadic <code>bind</code>.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-map" class="anchored"><a href="#val-map" class="anchor"></a><code><span><span class="keyword">val</span> map : <span><span>( <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span class="type-var">'b</span> )</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>map f g st</code> is <code>f (g st)</code>.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-(>|=)" class="anchored"><a href="#val-(>|=)" class="anchor"></a><code><span><span class="keyword">val</span> (>|=) : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>( <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span class="type-var">'b</span> )</span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-delay" class="anchored"><a href="#val-delay" class="anchor"></a><code><span><span class="keyword">val</span> delay : <span><span>( <span>unit <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span> )</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Delay evaluation. Useful for side-effectful generators that need some code to run for every call. Example:</p><pre><code>let gensym = let r = ref 0 in fun () -> incr r; !r ;;
|
||
|
||
delay (fun () ->
|
||
let name = gensym() in
|
||
small_int >>= fun i -> return (name,i)
|
||
)</code></pre><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.4</li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-choose" class="anchored"><a href="#val-choose" class="anchor"></a><code><span><span class="keyword">val</span> choose : <span><span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> list</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> option</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Choose a generator within the list.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-choose_exn" class="anchored"><a href="#val-choose_exn" class="anchor"></a><code><span><span class="keyword">val</span> choose_exn : <span><span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> list</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Like <a href="#val-choose"><code>choose</code></a> but without option.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if the list is empty.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-choose_array" class="anchored"><a href="#val-choose_array" class="anchor"></a><code><span><span class="keyword">val</span> choose_array : <span><span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> array</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> option</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Choose a generator within the array.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-choose_return" class="anchored"><a href="#val-choose_return" class="anchor"></a><code><span><span class="keyword">val</span> choose_return : <span><span><span class="type-var">'a</span> list</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Choose among the list.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if the list is empty.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-replicate" class="anchored"><a href="#val-replicate" class="anchor"></a><code><span><span class="keyword">val</span> replicate : <span>int <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> list</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>replicate n g</code> makes a list of <code>n</code> elements which are all generated randomly using <code>g</code>.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-sample_without_duplicates" class="anchored"><a href="#val-sample_without_duplicates" class="anchor"></a><code><span><span class="keyword">val</span> sample_without_duplicates :
|
||
<span>cmp:<span>( <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></span></span> int )</span> <span class="arrow">-></span></span>
|
||
<span>int <span class="arrow">-></span></span>
|
||
<span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span>
|
||
<span><span><span class="type-var">'a</span> list</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>sample_without_replacement n g</code> makes a list of <code>n</code> elements which are all generated randomly using <code>g</code> with the added constraint that none of the generated random values are equal.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if <code>n <= 0</code>.</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 2.4</li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-list_seq" class="anchored"><a href="#val-list_seq" class="anchor"></a><code><span><span class="keyword">val</span> list_seq : <span><span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> list</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> list</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Build random lists from lists of random generators.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.4</li></ul></div></div><div class="odoc-spec"><div class="spec exception" id="exception-Pick_from_empty" class="anchored"><a href="#exception-Pick_from_empty" class="anchor"></a><code><span><span class="keyword">exception</span> </span><span><span class="exception">Pick_from_empty</span></span></code></div><div class="spec-doc"><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.16</li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-pick_list" class="anchored"><a href="#val-pick_list" class="anchor"></a><code><span><span class="keyword">val</span> pick_list : <span><span><span class="type-var">'a</span> list</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Pick an element at random from the list.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Pick_from_empty</span> <p>if the list is empty.</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.16</li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-pick_array" class="anchored"><a href="#val-pick_array" class="anchor"></a><code><span><span class="keyword">val</span> pick_array : <span><span><span class="type-var">'a</span> array</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Pick an element at random from the array.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Pick_from_empty</span> <p>if the array is empty.</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.16</li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-small_int" class="anchored"><a href="#val-small_int" class="anchor"></a><code><span><span class="keyword">val</span> small_int : <span>int <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>A small int (100).</p></div></div><div class="odoc-spec"><div class="spec value" id="val-int" class="anchored"><a href="#val-int" class="anchor"></a><code><span><span class="keyword">val</span> int : <span>int <span class="arrow">-></span></span> <span>int <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Random int within the given range.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-int_range" class="anchored"><a href="#val-int_range" class="anchor"></a><code><span><span class="keyword">val</span> int_range : <span>int <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <span>int <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Inclusive range.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-small_float" class="anchored"><a href="#val-small_float" class="anchor"></a><code><span><span class="keyword">val</span> small_float : <span>float <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>A reasonably small float (100.0).</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.6.1</li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-float" class="anchored"><a href="#val-float" class="anchor"></a><code><span><span class="keyword">val</span> float : <span>float <span class="arrow">-></span></span> <span>float <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Random float within the given range.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.6.1</li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-float_range" class="anchored"><a href="#val-float_range" class="anchor"></a><code><span><span class="keyword">val</span> float_range : <span>float <span class="arrow">-></span></span> <span>float <span class="arrow">-></span></span> <span>float <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Inclusive range. <code>float_range a b</code> assumes <code>a < b</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.6.1</li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-split" class="anchored"><a href="#val-split" class="anchor"></a><code><span><span class="keyword">val</span> split : <span>int <span class="arrow">-></span></span> <span><span><span>(int * int)</span> option</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Split a positive value <code>n</code> into <code>n1,n2</code> where <code>n = n1 + n2</code>.</p><ul class="at-tags"><li class="returns"><span class="at-tag">returns</span> <p><code>None</code> if the value is too small.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-split_list" class="anchored"><a href="#val-split_list" class="anchor"></a><code><span><span class="keyword">val</span> split_list : <span>int <span class="arrow">-></span></span> <span>len:int <span class="arrow">-></span></span> <span><span><span>int list</span> option</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Split a value <code>n</code> into a list of values whose sum is <code>n</code> and whose length is <code>length</code>. The list is never empty and does not contain <code>0</code>.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if <code>len <= 1</code>.</p></li></ul><ul class="at-tags"><li class="returns"><span class="at-tag">returns</span> <p><code>None</code> if the value is too small.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-retry" class="anchored"><a href="#val-retry" class="anchor"></a><code><span><span class="keyword">val</span> retry : <span>?max:int <span class="arrow">-></span></span> <span><span><span><span class="type-var">'a</span> option</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> option</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>retry g</code> calls <code>g</code> until it returns some value, or until the maximum number of retries was reached. If <code>g</code> fails, then it counts for one iteration, and the generator retries.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">max:</span> <p>maximum number of retries. Default <code>10</code>.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-try_successively" class="anchored"><a href="#val-try_successively" class="anchor"></a><code><span><span class="keyword">val</span> try_successively : <span><span><span><span><span class="type-var">'a</span> option</span> <a href="#type-t">t</a></span> list</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> option</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>try_successively l</code> tries each generator of <code>l</code>, one after the other. If some generator succeeds its result is returned, else the next generator is tried.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-(<?>)" class="anchored"><a href="#val-(<?>)" class="anchor"></a><code><span><span class="keyword">val</span> (<?>) : <span><span><span><span class="type-var">'a</span> option</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span><span><span class="type-var">'a</span> option</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> option</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>a <?> b</code> is a choice operator. It first tries <code>a</code>, and returns its result if successful. If <code>a</code> fails, then <code>b</code> is returned.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-fix" class="anchored"><a href="#val-fix" class="anchor"></a><code><span><span class="keyword">val</span> fix :
|
||
<span>?sub1:<span><span>( <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span> )</span> list</span> <span class="arrow">-></span></span>
|
||
<span>?sub2:<span><span>( <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span> )</span> list</span> <span class="arrow">-></span></span>
|
||
<span>?subn:<span><span>(<span>int <a href="#type-t">t</a></span> * <span>( <span><span><span><span class="type-var">'a</span> list</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span> )</span>)</span> list</span> <span class="arrow">-></span></span>
|
||
<span>base:<span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span>
|
||
<span><span>int <a href="#type-t">t</a></span> <span class="arrow">-></span></span>
|
||
<span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Recursion combinators, for building recursive values. The integer generator is used to provide fuel. The <code>sub_</code> generators should use their arguments only once!</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">sub1</span> <p>cases that recurse on one value.</p></li></ul><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">sub2</span> <p>cases that use the recursive gen twice.</p></li></ul><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">subn</span> <p>cases that use a list of recursive cases.</p></li></ul></div></div><h5 id="applicative"><a href="#applicative" class="anchor"></a>Applicative</h5><div class="odoc-spec"><div class="spec value" id="val-pure" class="anchored"><a href="#val-pure" class="anchor"></a><code><span><span class="keyword">val</span> pure : <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-(<*>)" class="anchored"><a href="#val-(<*>)" class="anchor"></a><code><span><span class="keyword">val</span> (<*>) : <span><span><span>( <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span class="type-var">'b</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="#type-t">t</a></span></span></code></div></div><div class="odoc-include"><div class="spec-doc"><p>Let operators on OCaml >= 4.08.0, nothing otherwise</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 2.8</li></ul></div><div class="odoc-spec"><div class="spec value" id="val-let+" class="anchored"><a href="#val-let+" class="anchor"></a><code><span><span class="keyword">val</span> let+ : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>( <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span class="type-var">'b</span> )</span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-and+" class="anchored"><a href="#val-and+" class="anchor"></a><code><span><span class="keyword">val</span> and+ : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span><span class="type-var">'b</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>(<span class="type-var">'a</span> * <span class="type-var">'b</span>)</span> <a href="#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-let*" class="anchored"><a href="#val-let*" class="anchor"></a><code><span><span class="keyword">val</span> let* : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>( <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="#type-t">t</a></span> )</span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-and*" class="anchored"><a href="#val-and*" class="anchor"></a><code><span><span class="keyword">val</span> and* : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span><span class="type-var">'b</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>(<span class="type-var">'a</span> * <span class="type-var">'b</span>)</span> <a href="#type-t">t</a></span></span></code></div></div></div><h5 id="run-a-generator"><a href="#run-a-generator" class="anchor"></a>Run a generator</h5><div class="odoc-spec"><div class="spec value" id="val-run" class="anchored"><a href="#val-run" class="anchor"></a><code><span><span class="keyword">val</span> run : <span>?st:<a href="#type-state">state</a> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p>Using a random state (possibly the one in argument) run a generator.</p></div></div></div></body></html> |