Closed CubicMelon closed 9 months ago
I think the message is saying that the expectation was for a value that is 0
, 1
, or 2
, but it got 3
.
IIUC, the [0, 3)
notation is from math -- a half-open interval (so 0
is included but 3
is not).
May be you are familiar already, but FWIW, there are some details in this section of a Wikipedia page (no direct link -- searching for "half-open" may get one closer).
Your (length part-list)
is returning 3, which means your loop
is going to run a total of four times (because you're starting at zero, so it will run for i
= {0, 1, 2, 3}). But a zero-indexed array with three elements only goes up to a max of 2.
To fix it, you could decrement that value (like this: (dec (length part-list))
) so that you only run the loop three times (on 0, 1, 2).
EDIT: Although actually, looking at the body of your loop, you're incrementing the i
to get the next element in the array. So that will go out of bounds when the loop runs on i
= 2. You might want to try (- 2 (length part-list))
instead of what I wrote above.
EDIT AGAIN: Actually I think I was wrong above, because the :range
keyword in (loop)
goes UP TO the second number but doesn't include it. So only decrementing the counter a single time should be fine, only because you're looking one ahead in the body of the loop 🙂
That was it, I had to decrement the end of the range by 1 because I was looking one index ahead each loop! That's what I get for trying to write this overnight. Thanks so much for helping me understand.
Hi all, I'm not sure if this is a result of me doing something very confusing for the compiler or something, but I'm getting a very strange error with this function:
(there is probably a far better way to do this, but this is the best I could come up with in my inexperience) In any case, the issue is when I call this function, it does what is intended correctly but then gives an error saying:
Why is it complaining about 3 not being an integer? It's very strange.
Thanks for any insight!