diff options
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); + } } |
