Hace un tiempo, me encontré con an article on FingerTrees (véase también an accompanying Stack Overflow Question) y archivé la idea. Finalmente encontré una razón para hacer uso de ellos.¿Por qué las FingerTrees no se usan lo suficiente para tener una implementación estable?
Mi problema es que el Data.FingerTree package parece tener un poco de putrefacción en los bordes. Además, Data.Sequence en el paquete de Contenedores que hace uso de la estructura de datos re-implements una (posiblemente mejor) versión, pero no la exporta.
Por teóricamente útil que parezca esta estructura, no parece obtener mucho uso o atención. ¿Han encontrado las personas que FingerTrees no son útiles como una cuestión práctica, o este es un caso no es suficiente atención?
más explicaciones:
estoy interesado en la construcción de un texto que sostiene la estructura de datos que tiene buenas propiedades de concatenación. Piensa en construir un documento HTML a partir de fragmentos surtidos. La mayoría de las soluciones preconstruidas usan cadenas de bytes, pero realmente quiero algo que trate adecuadamente el texto Unicode. Mi plan en este momento es copiar fragmentos de Data.Text en un FingerTree.
También me gustaría tomar prestado el truco de Data.Vector de tomar rodajas sin copiar usando la manipulación (desplazamiento, longitud). Data.Text.Text tiene esto incorporado al tipo de datos, pero solo lo usa para desconexiones y operaciones irrelevantes eficientes. En FingerTree esta información podría convertirse fácilmente en v
o anotación del árbol.
¿Por qué no utilizar Data.Text.Lazy.Text? – dave4420
La mayoría de las personas no necesita interactuar con la estructura del árbol de dedo en sí; solo necesitan lo que obtienen de 'Data.Sequence'. Muy pocas personas realmente encuentran un caso donde necesitan usar la estructura de datos directamente. –