[Práctico 2][Ejercicio 3] Función encode con tipo Data.Text mantener seguimiento de índice - elemento actual.

[Práctico 2][Ejercicio 3] Función encode con tipo Data.Text mantener seguimiento de índice - elemento actual.

de Bruno Alberto Szilagyi Ibarra -
Número de respuestas: 4

Buenas tardes.

La duda viene por lo que indico en el asunto. Para el caso donde manipulo los Strings como listas de chars, no tuve problema en añadir un zip [1..] para indexar y manejar la lista.
Ahora, en el caso de Text, eso no estaría permitido (según entendí en la doc). ¿Tienen alguna sugerencia de como encarar ésto?

Ésto es para atacar el punto en donde se habla de la codificación para cada carácter de la cadena.

 

Muchas gracias.

En respuesta a Bruno Alberto Szilagyi Ibarra

Re: [Práctico 2][Ejercicio 3] Función encode con tipo Data.Text mantener seguimiento de índice - elemento actual.

de Bruno Alberto Szilagyi Ibarra -

Un tema que pensé es que podría utilizar una mónada de estado para ir acumulando los elementos procesados para saber su índice.

En respuesta a Bruno Alberto Szilagyi Ibarra

Re: [Práctico 2][Ejercicio 3] Función encode con tipo Data.Text mantener seguimiento de índice - elemento actual.

de Marcos Viera - InCo -

Hay formas más sencillas en la biblioteca Data.Text para hacer un map que a la vez lleve un acumulador...


En respuesta a Marcos Viera - InCo

Re: [Práctico 2][Ejercicio 3] Función encode con tipo Data.Text mantener seguimiento de índice - elemento actual.

de Bruno Alberto Szilagyi Ibarra -

Marcos, muchas gracias. Ya pude encontrar la función que buscaba.


En cuanto a la performance (con el archivo de el_quijote.txt) , ambos "encode" están en tiempos similares 1,8 s aprox.
Lo que sí, el encode que usa TEXT consume mucho menos memoria.

La verdad que esperaba que el encode con TEXT funcionara mucho más rápido que el otro.

 

Saludos.

En respuesta a Bruno Alberto Szilagyi Ibarra

Re: [Práctico 2][Ejercicio 3] Función encode con tipo Data.Text mantener seguimiento de índice - elemento actual.

de Marcos Viera - InCo -

Es raro, yo tengo una implementación que tiene diferencias. Los siguientes son tiempos de encode+decode.

Con "El Quijote":

$ time ./pr2ej3DT 
real 0m0,565s
user 0m0,544s
sys 0m0,008s
$ time ./pr2ej3String 
real 0m2,203s
user 0m1,906s
sys 0m0,274s


Con "La Guerra y la Paz":

$ time ./pr2ej3DT 
real 0m1,763s
user 0m1,704s
sys 0m0,046s
$ time ./pr2ej3String 
real 0m6,718s
user 0m6,055s
sys 0m0,661s


Quizás en algún punto no estés cortando la fusión por uso incorrecto de alguna función? Definiste encode de forma composicional?