time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

commit 25a27f7fc48436cfbb35c44cec5e56a29e53f170
parent 7ce4658d30d7742d22a6e3d5bf8321f4019b7894
Author: NunoSempere <nuno.sempere@protonmail.com>
Date:   Sun, 15 Oct 2023 01:14:41 +0100

fix: add tail recursion

Diffstat:
Mocaml/out/samples | 0
Mocaml/out/samples.cmi | 0
Mocaml/out/samples.cmx | 0
Mocaml/out/samples.o | 0
Mocaml/samples.ml | 12+++++++++++-
5 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/ocaml/out/samples b/ocaml/out/samples Binary files differ. diff --git a/ocaml/out/samples.cmi b/ocaml/out/samples.cmi Binary files differ. diff --git a/ocaml/out/samples.cmx b/ocaml/out/samples.cmx Binary files differ. diff --git a/ocaml/out/samples.o b/ocaml/out/samples.o Binary files differ. diff --git a/ocaml/samples.ml b/ocaml/samples.ml @@ -34,7 +34,16 @@ let findIndex xs test = in recursiveHelper xs 0 -let rec unwind xs = +let unwind xs = + let rec tailRecursiveHelper ys acc = + match ys with + | [] -> Ok(acc) + | Error e :: _ -> Error e + | Ok(y) :: ys -> tailRecursiveHelper ys (y :: acc) + in + tailRecursiveHelper xs [] + + (* previous version, which wasn't tail-recursive match xs with | [] -> Ok([]) | Error e:: ys -> Error e @@ -43,6 +52,7 @@ let rec unwind xs = | Ok(zs) -> Ok(y :: zs) | Error e -> Error e ) + *) (* Basic samplers *) let sampleZeroToOne () : float = Random.float 1.0