At 09:56 AM 5/9/2006 -0700, Mike Krell wrote:
>On 5/9/06, Phillip J. Eby <[EMAIL PROTECTED]> wrote:
>>At 06:19 AM, 9 May 2006 +0000, Talin <[EMAIL PROTECTED]> wrote:
>> >Now, generic functions are good at dealing with these kinds of
>> >situations. However, generic functions (as they are usually concieved)
>> >can only deal with specific, concrete types, not "types which satisfy
>> >some constraint".
>>
>>  [Discussion of Haskell's typeclasses snipped]
>
>I tried to follow the recent generic functions / adaptation in Python
>3000 discussion, but the details quickly went over my head.  Could
>Phillip or some other kind soul give a simple example / summary of how
>the final proposal addresses this "types which satisfy some
>constraint" question?

The idea is that constraints are based on what operations can be performed 
on the type.  In today's duck typing, you do this by seeing if the object 
has an attribute -- the method for performing the operation.  So you're 
querying the object for the operation

In a generic function/typeclass world, you would instead ask the operation 
if it supports the object...  almost as if you could say 
'len.supports(someobject)' instead of 'hasattr(someobject,"__len__")'.

Typeclasses then extend this idea to say that you could declare a 
particular parameter of a function as having to be supported by len(), 
operator.getitem() and so forth...  or for convenience's sake, you could 
define a typeclass like "read-only sequence" to mean an object can be used 
with len(), getitem() and iter().  You would then use that typeclass to 
define parameter types.

_______________________________________________
Python-3000 mailing list
Python-3000@python.org
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe: 
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com

Reply via email to