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