[erlang-questions] Best way to test if empty dict/set/etc.?
Fri May 31 16:44:26 CEST 2013
On 05/31/2013 03:25 AM, Kostis Sagonas wrote:
> Since I've also stumbled across something analogous in the past, IMO the
> proper solution is to extend the API of these opaque data structures
> (these modules) by providing is_empty/1 functions for them.
I feel better knowing that I wasn't just missing some obvious is_empty
substitute. I also agree with your sentiment about keeping opaque
structures "opaque" - and the documentation implies a similar sentiment
("The representation of a dictionary|set is not defined.").
In an off-list post, it was pointed out that the structures that are
missing is_empty predicates (dict, orddict, sets, ordsets) are also
missing any API function to peek at or take an arbitrary element
(similar to queue:peek or queue:out) - which could be used as an
is_empty substitute (a more useful one at that).
Another problem with relying on either size(X) or the representation
itself is that dict and orddict (likewise set and ordset) have identical
APIs apparently to allow for substitution of one for the other with
minimal code churn (other than the == vs. =:= issue). But their
representations (and the performance of size) differ.
> I am sure the OTP folks would welcome a patch.
Maybe that's the answer. But, the lack of an is_empty predicate for
dict/sets has existed in Erlang for so long!?
More information about the erlang-questions