diff options
Diffstat (limited to 'rust/src/lambda.rs')
| -rw-r--r-- | rust/src/lambda.rs | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/rust/src/lambda.rs b/rust/src/lambda.rs index 0080f63..b05bd22 100644 --- a/rust/src/lambda.rs +++ b/rust/src/lambda.rs @@ -17,7 +17,7 @@ pub fn run(arg: &str) -> String { fn interpret(arg: &Value) -> Value { match arg { - Value::App(l, r) => apply(&interpret(l), r), + Value::App(l, r) => apply(&interpret(l), &interpret(r)), other => other.clone(), } } @@ -87,4 +87,11 @@ mod lambda_test { let value = parse("(((lam x (lam x x)) 13) 12)"); assert_eq!(Value::Num(12), interpret(&value)); } + + #[test] + fn interpretation_applies_to_both_sides_of_application() { + let value = parse("((lam x x) ((lam x x) 12))"); + assert_eq!(Value::Num(12), interpret(&value)); + } + } |
