Un fix de un bug con list_sort, que solucioné aplicando lo propuesto acá (https://github.com/sisoputnfrba/so-commons-library/issues/121). Además, cambié el algoritmo de esta función: ahora crea una lista auxiliar, va quitando cada nodo de la lista e insertándolo en forma ordenada en la auxiliar (solo los mueve, no crea nuevos). Al final, el head de la lista original para a ser la lista auxiliar y, de esa forma, se obtiene una lista ordenada.
1.1. Una nueva feature list_add_sorted (más conocido como "insertar ordenado").
Nueva feature list_zip_with, creo que es una buena idea mostrar una solución que use list_map para que, si alguien quiere hacer un zip with entre 3 listas o más, pueda ver cómo hacerlo. Quizás se podría usar para reconstruir un struct después de serializar: uno crea listas para cada parámetro y esta función serviría para "juntarlos en uno" como se ve en el test. Me pareció copada por eso.
Un refactor en cuanto a los algoritmos de las funciones de listas, en mi opinión no sé si gana tanto en eficiencia, pero sí en cuanto a la lógica usada: la idea es que están las funciones "genéricas" privadas, y que cada función usa esa lógica de diferentes formas:
list_find_element sirve para get, replace y find
list_remove_element sirve para remove, remove_by_condition y sort
list_add_element sirve para add, add_in_index, add_sorted y sort
list_add_to_sublist sirve para todas las funciones que crean (o agregan elementos a) una lista diferente de la original (transformados o no).
Creo que pueden ser útiles para el que quiera meterse a codear aún más funciones de listas.
Este PR incluye:
Un fix de un bug con
list_sort
, que solucioné aplicando lo propuesto acá (https://github.com/sisoputnfrba/so-commons-library/issues/121). Además, cambié el algoritmo de esta función: ahora crea una lista auxiliar, va quitando cada nodo de la lista e insertándolo en forma ordenada en la auxiliar (solo los mueve, no crea nuevos). Al final, el head de la lista original para a ser la lista auxiliar y, de esa forma, se obtiene una lista ordenada. 1.1. Una nueva featurelist_add_sorted
(más conocido como "insertar ordenado").Una nueva feature
list_remove_and_destroy_all_by_condition
(https://github.com/sisoputnfrba/so-commons-library/issues/105)Nuevas features para foldeos de listas (https://github.com/sisoputnfrba/so-commons-library/issues/116) 3.1.
list_fold1
3.2.list_get_min_by
3.3.list_get_max_by
Nueva feature
list_zip_with
, creo que es una buena idea mostrar una solución que uselist_map
para que, si alguien quiere hacer un zip with entre 3 listas o más, pueda ver cómo hacerlo. Quizás se podría usar para reconstruir un struct después de serializar: uno crea listas para cada parámetro y esta función serviría para "juntarlos en uno" como se ve en el test. Me pareció copada por eso.Un refactor en cuanto a los algoritmos de las funciones de listas, en mi opinión no sé si gana tanto en eficiencia, pero sí en cuanto a la lógica usada: la idea es que están las funciones "genéricas" privadas, y que cada función usa esa lógica de diferentes formas:
list_find_element
sirve para get, replace y findlist_remove_element
sirve para remove, remove_by_condition y sortlist_add_element
sirve para add, add_in_index, add_sorted y sortlist_add_to_sublist
sirve para todas las funciones que crean (o agregan elementos a) una lista diferente de la original (transformados o no).Creo que pueden ser útiles para el que quiera meterse a codear aún más funciones de listas.