[Python-Dev] type categories
Andrew Koenig
ark@research.att.com
16 Aug 2002 10:18:34 -0400
>> In the ML example I showed earlier:
>> fun len([]) = 0
>> | len(h::t) = len(t) + 1
>> ordering is crucial: As long as the argument is not empty, both cases
>> match, so the language is defined to test the clauses in sequence.
>> My intuition is that people will often want to define category tests
>> to be done in a particular order. There is no problem with such ordering
>> as long as all of the tests are specified together.
Martin> What does "not empty" mean in this context? "not []"? Does h::t match []
Martin> or does [2] match []? Why is the ordering crucial? In Haskell:
Martin> f [] = 0
Martin> f (x:xs) = 1 + f xs
Martin> is totally equivalent with:
Martin> f (x:xs) = 1 + f xs
Martin> f [] = 0
I'm sorry, you're right. In this particular example, there is no
overlap, so order doesn't matter. However, the general point still
stands: ML patterns are order-sensitive in cases where there is
overlap.
--
Andrew Koenig, ark@research.att.com, http://www.research.att.com/info/ark