diff options
| author | Arnaud Bailly <arnaud.bailly@iohk.io> | 2024-10-10 18:28:45 +0200 |
|---|---|---|
| committer | Arnaud Bailly <arnaud.bailly@iohk.io> | 2024-10-10 18:28:45 +0200 |
| commit | 6c6528ae00bbbdce5571379bb2ad2118632d5dbf (patch) | |
| tree | 792937778f868decf77262ae9587ccfa4c335839 | |
| parent | 653c7d93e9f8ecae78bdd2d884cce59041b11202 (diff) | |
| download | lambda-nantes-6c6528ae00bbbdce5571379bb2ad2118632d5dbf.tar.gz | |
Built-in /eval endpoint sometimes return garbage
| -rw-r--r-- | rust/src/lambda.rs | 2 | ||||
| -rw-r--r-- | rust/src/web.rs | 7 |
2 files changed, 7 insertions, 2 deletions
diff --git a/rust/src/lambda.rs b/rust/src/lambda.rs index 30f9f43..a73ca34 100644 --- a/rust/src/lambda.rs +++ b/rust/src/lambda.rs @@ -96,7 +96,7 @@ fn subst(var: &str, body: &Value, e: &Value) -> Value { } } -fn gensym() -> String { +pub fn gensym() -> String { let mut rng = rand::thread_rng(); let n1: u8 = rng.gen(); diff --git a/rust/src/web.rs b/rust/src/web.rs index 0bf36a5..c63268a 100644 --- a/rust/src/web.rs +++ b/rust/src/web.rs @@ -5,13 +5,14 @@ use futures::lock::Mutex; use handlebars::{DirectorySourceOptions, Handlebars}; use log::info; use proptest::test_runner::{Config, RngAlgorithm, TestRng, TestRunner}; +use rand::Rng; use serde::{Deserialize, Serialize}; use std::time::Duration; use std::{collections::HashMap, sync::Arc}; use tokio::task; use uuid::Uuid; -use lambda::lambda::{eval_all, eval_whnf, generate_expr, generate_exprs, Environment}; +use lambda::lambda::{eval_all, eval_whnf, generate_expr, generate_exprs, gensym, Environment}; use lambda::parser::{parse, parse_total}; #[derive(Debug, PartialEq, Serialize, Deserialize, Clone)] @@ -221,6 +222,10 @@ async fn eval(input: String) -> impl Responder { let exprs = parse_total(&input); match exprs { Ok(exprs) => { + let mut rng = rand::thread_rng(); + if rng.gen_range(0..10) <= 2 { + return HttpResponse::Ok().body(gensym()); + } let output = eval_all(&exprs) .iter() .map(|v| format!("{}", v)) |
