From a2210f2db3013fc7f5bcad5afa1792e994dcd414 Mon Sep 17 00:00:00 2001 From: Roman Godmaire Date: Tue, 14 May 2024 14:48:52 -0400 Subject: [PATCH] fix: 1-based indexing, babey --- mute-interpreter/src/env/core.rs | 6 +++++- mute-interpreter/src/evaluator.rs | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/mute-interpreter/src/env/core.rs b/mute-interpreter/src/env/core.rs index 6c75124..40333d8 100644 --- a/mute-interpreter/src/env/core.rs +++ b/mute-interpreter/src/env/core.rs @@ -334,7 +334,11 @@ pub(super) fn core() -> HashMap { } }; - list.get(nth).unwrap().clone() + if nth < 1 { + return Node::Error(format!("TypeError: expected positive int, got {}", nth)); + } + + list.get(nth - 1).unwrap().clone() }), ), ( diff --git a/mute-interpreter/src/evaluator.rs b/mute-interpreter/src/evaluator.rs index 5ebb6f5..3a79597 100644 --- a/mute-interpreter/src/evaluator.rs +++ b/mute-interpreter/src/evaluator.rs @@ -474,7 +474,7 @@ mod test { // List Manipulation #[case("(first (list 1 2 3))", "1")] #[case("(last (list 1 2 3))", "3")] - #[case("(nth (list 1 2 3) 1)", "2")] + #[case("(nth (list 1 2 3) 2)", "2")] #[case("(push-front (list 1 2 3) 0)", "(0 1 2 3)")] #[case("(push-back (list 1 2 3) 4)", "(1 2 3 4)")] #[case("(pop-front (list 1 2 3))", "(2 3)")]