expert-experiments

This commit is contained in:
Alexander Heldt
2025-11-08 19:32:36 +01:00
parent 0d5036c5c4
commit 760f5ef4a6
10 changed files with 441 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
import gleam/result
pub fn with_retry(experiment: fn() -> Result(t, e)) -> Result(t, e) {
case experiment() {
Error(_) -> experiment()
Ok(result) -> Ok(result)
}
}
pub fn record_timing(
time_logger: fn() -> Nil,
experiment: fn() -> Result(t, e),
) -> Result(t, e) {
time_logger()
let result = experiment()
time_logger()
result
}
pub fn run_experiment(
name: String,
setup: fn() -> Result(t, e),
action: fn(t) -> Result(u, e),
record: fn(t, u) -> Result(v, e),
) -> Result(#(String, v), e) {
use setup_result <- result.try(setup())
use action_result <- result.try(action(setup_result))
use record_result <- result.try(record(setup_result, action_result))
Ok(#(name, record_result))
}