2012/6/22 Sergiu Ivanov <[email protected]>:
> Hello,
>
> These days FiniteSet enjoys a great deal of attention, mainly because
> of the failures similar to the one which shows up in [0]:
>
> File "/tmp/sympy-bot-tmpQK2faH/sympy/sympy/core/sets.py", line 1144,
> in sympy.core.sets.element_sort_fn
> Failed example:
>    FiniteSet((1,2), Float, A, -5, x, 'eggs', x**2, Interval)
> Expected:
>    {-5, <class 'sympy.core.numbers.Float'>, <class 
> 'sympy.core.sets.Interval'>,
>    eggs, x, x**2, {1, 2, 3}, (1, 2)}
> Got:
>    {-5, <class 'sympy.core.sets.Interval'>, <class
> 'sympy.core.numbers.Float'>, eggs, x, x**2, {1, 2, 3}, (1, 2)}
>
> The principal problem is in the fact that, currently:
>
> * FiniteSet implicitly sorts its elements, and

That is very wrong, for two reasons:
* mathematical sets have no notion of element ordering.
* this makes (large) FiniteSets much slower than anybody would expect.

>
> * FiniteSet can store arbitrary objects, including non-Basic objects.
>
> To sort the objects which not instances of Basic, FiniteSet currently
> creates the sort_key in the following way:
>
>  Float(1e9+abs(hash(x))).sort_key()
>
> which is (still) very much machine dependent.
>
> This issue was also discussed in [1].
>
> In view of the status quo, my question is as follows: how useful is
> the capability of FiniteSet to host any kind of object?  Does anyone
> use it?
>
> I have seen somewhere in SymPy that something stored a frozendict in a
> FiniteSet; this can be substituted by storing a FiniteSet within a
> FiniteSet.  My strong opinion is that FiniteSet should only be able to
> store Basic's, that would be much more consistent with the current
> SymPy philosophy as I perceive it.

I agree. It would also prevent people from mistakenly using FiniteSet when
they would be better served by builtin sets or frozensets.

>
> Sergiu
>
> [0] http://reviews.sympy.org/report/agZzeW1weTNyDAsSBFRhc2sY-cwdDA
>
> [1] https://groups.google.com/d/topic/sympy/pEub9LYInUI/discussion
>
> --
> You received this message because you are subscribed to the Google Groups 
> "sympy" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/sympy?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sympy?hl=en.

Reply via email to