From 68d05695856709ee1c251e496fb5b79a17134dbc Mon Sep 17 00:00:00 2001 From: Arnaud Bailly Date: Thu, 9 Oct 2025 16:06:24 +0200 Subject: feat: introduce arrow types --- lambda-calcul/rust/src/lambda.rs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'lambda-calcul/rust/src/lambda.rs') diff --git a/lambda-calcul/rust/src/lambda.rs b/lambda-calcul/rust/src/lambda.rs index c624b19..1a1a85b 100644 --- a/lambda-calcul/rust/src/lambda.rs +++ b/lambda-calcul/rust/src/lambda.rs @@ -149,12 +149,11 @@ pub fn generate_expression_to_type(size: u32, runner: &mut TestRunner) -> Vec { let n = any::().new_tree(runner).unwrap().current(); vec![Value::Num(n.into())] - }, + } _ => { let n = any::().new_tree(runner).unwrap().current(); vec![Value::Bool(n.into())] - }, - + } } } @@ -358,4 +357,14 @@ mod lambda_test { assert!(ty.is_err()); } + + #[test] + fn type_of_a_typed_abstraction_yields_a_function_type() { + let value = parse1("(tlam (x :Num) 42)"); + let mut ctx = Environment::new(); + + let ty = type_of(&value, &mut ctx).unwrap(); + + assert_eq!(Type::Arr(Box::new(Type::Num), Box::new(Type::Num)), ty); + } } -- cgit v1.2.3