diff options
| author | Arnaud Bailly <arnaud@pankzsoft.com> | 2025-10-09 16:06:24 +0200 |
|---|---|---|
| committer | Arnaud Bailly <arnaud@pankzsoft.com> | 2025-10-09 16:06:24 +0200 |
| commit | 68d05695856709ee1c251e496fb5b79a17134dbc (patch) | |
| tree | 8fb87c3575c1b30ea501540c410d38e58f09d588 /lambda-calcul/rust/src/lambda.rs | |
| parent | ecb4c59eb89a01ee2dea6495f6287cd0709ce403 (diff) | |
| download | lambda-nantes-68d05695856709ee1c251e496fb5b79a17134dbc.tar.gz | |
feat: introduce arrow types
Diffstat (limited to 'lambda-calcul/rust/src/lambda.rs')
| -rw-r--r-- | lambda-calcul/rust/src/lambda.rs | 15 |
1 files changed, 12 insertions, 3 deletions
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<Va 0 => { let n = any::<u16>().new_tree(runner).unwrap().current(); vec![Value::Num(n.into())] - }, + } _ => { let n = any::<bool>().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); + } } |
