From ecb4c59eb89a01ee2dea6495f6287cd0709ce403 Mon Sep 17 00:00:00 2001 From: Arnaud Bailly Date: Thu, 9 Oct 2025 15:43:41 +0200 Subject: feat: can type Bools and Syms --- lambda-calcul/rust/src/web.rs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 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 27aed21..5ad48bd 100644 --- a/lambda-calcul/rust/src/web.rs +++ b/lambda-calcul/rust/src/web.rs @@ -13,7 +13,10 @@ use std::{collections::HashMap, sync::Arc}; use tokio::task::{self, JoinHandle}; use uuid::Uuid; -use lambda::lambda::{Environment, eval_all, eval_whnf, generate_expr, generate_expression_to_type, generate_exprs, gensym, type_of_all}; +use lambda::lambda::{ + eval_all, eval_whnf, generate_expr, generate_expression_to_type, generate_exprs, gensym, + type_of_all, Environment, +}; use lambda::parser::{parse, parse_total}; #[derive(Debug, PartialEq, Serialize, Deserialize, Clone)] @@ -96,6 +99,8 @@ enum TestResult { } impl Client { + const TYPING_GRADE: u8 = 20; + fn new(url: String, name: String, delay: Duration, encoding: AstEncoding) -> Self { let id = Uuid::new_v4(); let runner = TestRunner::new_with_rng( @@ -119,7 +124,7 @@ impl Client { } fn generate_expr(&mut self) -> (Vec, Vec) { - if self.grade >= 20 { + if self.grade >= Self::TYPING_GRADE { self.generate_expression_to_type() } else if self.grade >= 10 { self.generate_exprs() @@ -131,8 +136,12 @@ impl Client { } fn generate_expression_to_type(&mut self) -> (Vec, Vec) { - let input = generate_expression_to_type(self.grade.into(), &mut self.runner); - let expected = type_of_all(&input).iter().map(|t| Value::Type(t.clone())).collect(); + 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(); (input, expected) } -- cgit v1.2.3