diff options
Diffstat (limited to 'lambda-calcul/rust/src/web.rs')
| -rw-r--r-- | lambda-calcul/rust/src/web.rs | 17 |
1 files changed, 13 insertions, 4 deletions
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<Value>, Vec<Value>) { - 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<Value>, Vec<Value>) { - 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) } |
