summaryrefslogtreecommitdiff
path: root/lambda-calcul/rust/src/web.rs
diff options
context:
space:
mode:
Diffstat (limited to 'lambda-calcul/rust/src/web.rs')
-rw-r--r--lambda-calcul/rust/src/web.rs17
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)
}