Open jordi-petit opened 3 months ago
From Codon stdlib source I see it has DynamicTuple
that can be initialized from the list (Codon 0.17.0).
On the other side, lists in Codon are hashable (with the hash based on all the values in the list), so they can be used as keys in maps. Any other list that is equal to the key list in the map will match.
lst = [1,2,3]
tup = DynamicTuple(lst)
print(lst)
print(tup)
map_lst_key = {lst: 1}
map_tup_key = {tup: 1}
print(map_lst_key)
print(map_tup_key)
output
[1, 2, 3]
(1, 2, 3)
{[1, 2, 3]: 1}
{(1, 2, 3): 1}
Thanks for your answer and mentioning DynamicTuple
and lists as hashable keys, which I did not know about.
However, DynamicTuple
is a Codon only feature not available in regular Python. It would still be nice to have a way to convert homogenous lists to tuples to improve compatibility.
From the documentation (https://docs.exaloop.io/codon/general/differences):
That's why DynamicTuple exists, and why no convertion of lists to tuples.
Hello @jordi-petit
DynamicTuple
is not yet intended for use in production.
I will need to add special constructors for this; should be done in the next release.
Dear developers,
It seems to me that Codon is unable to perform a simple conversion from a list to a tuple. Here is a minimal example:
The Python output is obviously
(1, 2)
, but Codon 0.16.3 complains with this error:This is a major nuissance as, many times, lists must be converted to tuples to insert them into dicts.