Módulo colecciones — Estructuras de Datos
Archivo: stdlib/std/colecciones.fa
¿Por qué existe?
Provee operaciones avanzadas sobre las estructuras de datos nativas de Forja: arreglos (listas), mapas (diccionarios), y agrega estructuras adicionales como pilas y conjuntos.
Funciones sobre Arreglos
| Función | Descripción |
|---|---|
longitud(arr) | Retorna la cantidad de elementos |
empujar(arr, valor) | Agrega un elemento al final (push) |
sacar(arr) | Quita y retorna el último elemento (pop) |
insertar(arr, idx, valor) | Inserta un elemento en una posición específica |
eliminar(arr, idx) | Elimina el elemento en una posición |
contiene(arr, valor) | Verifica si un valor existe en el arreglo |
indice_de(arr, valor) | Busca el índice de un valor |
ordenar(arr) | Ordena el arreglo in-place |
invertir(arr) | Invierte el orden del arreglo |
mapa(arr, fn) | Aplica una función a cada elemento (map) |
filtrar(arr, fn) | Filtra elementos según un predicado (filter) |
reducir(arr, fn, inicial) | Acumula valores (reduce/fold) |
Funciones sobre Mapas
| Función | Descripción |
|---|---|
tiene(mapa, clave) | Verifica si una clave existe en el mapa |
claves(mapa) | Retorna un arreglo con todas las claves |
valores(mapa) | Retorna un arreglo con todos los valores |
copiar(mapa) | Crea una copia superficial del mapa |
Estructuras Adicionales
Pila (Stack)
| Función | Descripción |
|---|---|
Pila.nueva() | Crea una pila vacía |
pila.apilar(valor) | Agrega un elemento en la cima |
pila.desapilar() | Quita y retorna el elemento de la cima |
pila.tope() | Retorna el elemento en la cima sin quitarlo |
pila.esta_vacia() | Verifica si la pila está vacía |
Casos de uso
- Procesamiento de datos: Map/reduce sobre colecciones de datos
- Algoritmos: Búsqueda, ordenamiento, backtracking (con pilas)
- Estructuras temporales: Acumuladores, buffers, cachés en memoria
- Transformación de datos: Convertir, filtrar y agregar datos
💡 Rendimiento: Las operaciones
mapa, filtrar y reducir permiten escribir código declarativo y evitan bucles manuales, mejorando la legibilidad sin sacrificar rendimiento.