sisoputnfrba / so-commons-library

TADs de uso comun en aplicaciones desarrolladas en C
http://sisoputnfrba.github.io/so-commons-library/
GNU General Public License v3.0
106 stars 174 forks source link

Listas: Splice y drop #130

Closed RaniAgus closed 3 years ago

RaniAgus commented 3 years ago

Para desarrollar esta feature, me basé en el refactor en #126

Agrego la función list_splice, emulando el comportamiento de Array splice en JS:

    /**
    * @NAME: list_splice
    * @DESC: Retorna una nueva lista con los
    * primeros n elementos partiendo desde el 
    * índice indicado, eliminando del origen
    * estos elementos
    */

Y también cambio la firma de list_take_and_remove, la renombro como list_drop y hago que sea como un list_splice más específico, además de que tiene un comportamiento determinado si recibe un valor negativo:

    /**
    * @NAME: list_drop
    * @DESC: Retorna una nueva lista con los primeros n elementos, eliminando
    * del origen estos elementos. Si n es negativo, retorna y elimina todos 
    * excepto los -n últimos.
    */

Si bien drop en Haskell sería como un "take, remove and destroy", creo que el cambio de nombre suena mejor. Díganme si lo prefieren así y sino lo vuelvo atrás a como estaba.

RaniAgus commented 3 years ago

Unifico con #131, con algunos cambios