From 21befc8c8ab2e91632f5341b4fa9425cf3c815ff Mon Sep 17 00:00:00 2001 From: Arnaud Bailly Date: Mon, 13 Oct 2025 09:18:10 +0200 Subject: update from workshop 2bis --- lambda-calcul/rust/src/web.rs | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'lambda-calcul/rust/src/web.rs') diff --git a/lambda-calcul/rust/src/web.rs b/lambda-calcul/rust/src/web.rs index 7dae468..7345d0f 100644 --- a/lambda-calcul/rust/src/web.rs +++ b/lambda-calcul/rust/src/web.rs @@ -130,18 +130,18 @@ impl Client { self.generate_exprs() } else { let input = generate_expr(self.grade.into(), &mut self.runner); - let expected = eval_whnf(&input, &mut Environment::new()); + let expected = eval_whnf(&input, &mut Environment::new(), &mut Environment::new()); (vec![input], vec![expected]) } } fn generate_expression_to_type(&mut self) -> (Vec, Vec) { let input = - generate_expression_to_type((self.grade - Self::TYPING_GRADE).into(), &mut self.runner); - let expected = type_of_all(&input) - .iter() - .map(|t| Value::Type(t.clone())) - .collect(); + generate_expression_to_type((self.grade - Self::TYPING_GRADE).into(), &mut self.runner) + .into_iter() + .map(|e| Value::App(Box::new(Value::Sym(":type-of".to_string())), Box::new(e))) + .collect::>(); + let expected = eval_all(&input); (input, expected) } @@ -273,6 +273,7 @@ async fn eval(input: String) -> impl Responder { let exprs = parse_total(&input); match exprs { Ok(exprs) => { + // Occasionally return a random symbol to keep clients on their toes let mut rng = rand::thread_rng(); if rng.gen_range(0..10) <= 2 { return HttpResponse::Ok().body(gensym()); @@ -392,7 +393,10 @@ fn apply_result( ) { let mut client = client_m.lock().unwrap(); let test = client.check_result(&expected, &response); - info!("result for {} = {:?}, expected {:?}", client.url, test, expected); + info!( + "result for {} = {:?}, expected {:?}", + client.url, test, expected + ); client.apply(&test); } -- cgit v1.2.3