gh-141838: Add EmptyList, EmptyDict, EmptySet types for empty collection hinting #141839
+40
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Feature or enhancement Issue #141838
Proposal:
Proposal: Add Empty Collection Type Hints for Enhanced Type Precision
Problem: The current type system doesn't distinguish between empty and non-empty containers, which can lead to ambiguity in function contracts and require additional code inspection.
Current limitation:
Proposal: We suggest adding special forms for empty collections:
EmptyListfor[]EmptyDictfor{}EmptySetforset()EmptyTuplefor()Use cases:
Benefits:
Implementation consideration: These could be implemented as
_SpecialForminstances, similar to existing special types, ensuring no runtime impact.This would provide developers with additional expressiveness when designing APIs and function interfaces, particularly for cases where empty collections have specific semantic meaning.
Has this already been discussed elsewhere?
This is a minor feature, which does not need previous discussion elsewhere