Le mardi 13 mars 2012 à 14:57 +0100, Nicolas M. Thiery a écrit : > On Tue, Mar 13, 2012 at 02:11:10PM +0100, Martin Rubey wrote: > > "Nicolas M. Thiery" <nicolas.thi...@u-psud.fr> writes: > > In the code at hand I'd prefer to have the empty list. Currently I need > > to have a case distinction... > > > > With keyword argument min_part, we also get the empty list, by the way. > > Thanks for the feedback. Any preference anyone?
Hello, I do not have any preference but I really think that this question is very important. Such corner case appears in all basic combinatoric objects and it could be fine to fix a general rule for such cases, especially since we intend to refactor basic some combinatorial objects with Cython, ClonableIntArray, SetFactories and Selectors... >From my point of view, the problem is the following : You have a Constructor or SetFactory which have a lot of possible arguments and your code have to dealt with combination of arguments that make your set empty: Exemple : IntegerVectors(inner=[3,3,2], outer=[1,1,1]) Partitions(-1) Combinations(min_part=3, max_part=2) ... I could be fine to adopt the same behaviour every times : (1) - I consider each argument as a mathematical condition thus if two arguments make the set empty, it is the problem of the user and I return the EmptySet (better than the empty list, doing the same than the empty list but category compatible). (2) - I need to inform the user that he is asking for a absurdity because (3 <= size_part <= 2) ==> (3 <= 2) is a mathematical absurdity. I return a ValueError. (3) - Choosing (1) or (2) following the case. ******************* Extra question : What should return IntegerVectors(inner=[1,1,1], outer=[1,1]) ? (1) An error ? (2) An infinite set {[1,1,1], [1,1,2], [1,1,3], [1,1,4], ... } I do not have a strong experience for the long run on that but I played a lot with. It is not easy to choose a behaviour especially when one doesn't know so much use cases. Cheers, Nicolas B. -- You received this message because you are subscribed to the Google Groups "sage-combinat-devel" group. To post to this group, send email to sage-combinat-devel@googlegroups.com. To unsubscribe from this group, send email to sage-combinat-devel+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.