Uh oh!
There was an error while loading. Please reload this page.
Implement reversed(seq) - #2644
Conversation
kmr-srbh
commented
Apr 9, 2024
@Shaikh-Ubaid I am repurposing the Another way I think is to handle both the cases in one single function. We can call the I request you to guide me on this. |
kmr-srbh
commented
Apr 9, 2024
@Shaikh-Ubaid , the tests for |
| enum class IntrinsicElementalFunctions : int64_t { | ||
| ObjectType, | ||
| Reversed, |
There was a problem hiding this comment.
Reversed returns an iterator, but does not actually reverse a list. I think we do not have support for iterators yet in LPython.
The approach in this PR reverses the entire list, which I think is not the correct approach.
There was a problem hiding this comment.
@Shaikh-Ubaid I return a reversed list using the approach used for dict.keys (#1881 (comment)) as we do not support iterators now.
ubaidsk
commented
Apr 11, 2024
The current approach in this PR reverses the original list which we should not be doing. As a result, it fails for the following: % git diff
diff --git a/integration_tests/test_builtin_reversed.py b/integration_tests/test_builtin_reversed.py
index 51cf3607f..2f38e2e09 100644
--- a/integration_tests/test_builtin_reversed.py+++ b/integration_tests/test_builtin_reversed.py@@ -15,6 +15,7 @@ def test_builtin_reversed():
reversed_numbers: list[i32] = reversed(numbers)
print(reversed_numbers)
assert reversed_numbers == [5, 4, 3, 2, 1]
+ assert numbers == [1, 2, 3, 4, 5]
# list returned through function call
alphabet_dictionary: dict[str, i32] = {% lpython integration_tests/test_builtin_reversed.py['e', 'd', 'c', 'b', 'a'][5, 4, 3, 2, 1]AssertionError |
kmr-srbh
commented
Apr 11, 2024
Thank you very much for catching this @Shaikh-Ubaid ! I totally missed that I was modifying the original list. I think we can create a new function in |
ubaidsk
commented
Apr 11, 2024
I think we should not do that. Iterators do not make a copy. They simply work like a pointer which can be used to traverse an object. I would not implement |
kmr-srbh
commented
Apr 11, 2024
I think it is correct to either implement support for an iterator or wait for it. 👍 |
Working