[Python-3000] my take on "typeclasses"

Talin talin at acm.org
Thu May 11 19:35:33 CEST 2006


The word 'sequence' here doesn't mean an exclusive category. In a sense, 
all sequences are really mappings - they "map" a range of integers to 
values.

 From the standpoint of accepting an argument, we really don't care 
whether something is a sequence or a mapping, we care about what we can 
do with it. The approach that I'd like to take is to identify the use 
cases, and then devise tests that indicate whether those use cases can 
be applied.

So to avoid confusion, let's drop 'sequence' and 'mapping' for the 
moment, and instead think about use cases:

appendable( iterable ):
    -- An iterable that can be appended to
    -- Test: hasattr( append )
    -- (Probably also need to test the signature of append)

associative( indexable ):
    -- An iterable that contains associative pairs of items,
       where the item pairs can be iterated over
    -- Test: hasattr( iteritems )


Marcin 'Qrczak' Kowalczyk wrote:
> Talin <talin at acm.org> writes:
> 
> 
>>sequence( indexable ):
>>    -- an indexable in which the indexes are successive integers
>>    -- Test: isinstance( index_type, int )
> 
> 
> I don't understand. How would this test distinguish [] being a
> sequence from {} not being a sequence?
> 
> 
>>mapping( indexable ):
>>    -- an indexable in which the indices are hashable values:
>>    -- Test: hashable( index_type )
>>    -- (Also test for immutable if its feasible)
> 
> 
> And this on the contrary?
> 


More information about the Python-3000 mailing list