haskell - online - Data.Set: ¿siempre se sabe mejor?
haskell online (2)
Necesito representar un conjunto y estoy empezando a trabajar con Data.Set. Veo que en realidad no hay nada que hacer: singleton
, union
, intersection
, etc. están todos ahí. Me gusta. Puedo expresar "qué", no "cómo". Pero mi programador interno de C es incómodo. Hay muchas formas de implementar un conjunto (árbol binario, hash, matriz booleana, etc.) ¿Puedo realmente confiar en Data.Set para elegir el mejor? ¿Puedo guiarlo de alguna manera, o simplemente me rindo a su juicio (lo admito, probablemente superior)?
El conjunto de datos general utiliza un árbol binario equilibrado. Si tiene conjuntos de enteros o vectores de bits, querrá que Data.IntSet
, que utiliza los intentos de Patricia.
Ambas implementaciones se han perfeccionado a través de años de competencia para obtener el mejor rendimiento posible con Haskell.
¡Ríndete a Dorothy!
Data.Set
no tiene inteligencia interna (solo ve la fuente ). Es solo un árbol equilibrado o elementos ordenados. Puede mirar a su alrededor en hackage para muchos otros conjuntos y estructuras similares con diferentes características de rendimiento. Por ejemplo, vea unordered-containers (HashSet), HashTables y bloomfilter .