Colecciones
El lenguaje cuenta con las colecciones lista y diccionario.
Lista¶
La lista encapsula valores de cualquier tipo de forma secuencial. Para esto se usa el identificador list. Por ejemplo,
1 2 | |
Debido a que el Botlang es funcional, no cuenta con estructuras de control de tipo while o for. Por esto la iteración suele hacerse a través de listas, mediante primitivas para manipulación de las mismas, como map, filter, reduce, entre otras.
Operaciones¶
| Operador | Código de ejemplo | Resultado |
|---|---|---|
| get | (get (list 4 5 6) 2) | 5 |
| get-or-nil | (get-or-nil (list 4 5 6) 4) | nil |
| extend | (extend (list 1 2) (list 3 4)) | [1, 2, 3, 4] |
| head | (head (list 1 2 3)) | 1 |
| tail | (tail (list 1 2 3)) | [2, 3] |
| init | (init (list 1 2 3)) | [1, 2] |
| last | (last (list 1 2 3)) | 3 |
| length | (length (list 1 2 3)) | 3 |
| map | (map f (list 1 2 3)) | [f(1), f(2), f(3)] |
| filter | (filter (function (v) (> v 3)) (list 5 2 8 9 -5 4) | [5, 8, 9, 4] |
| sort | (sort (list 2 3 1)) | [1,2,3] |
| max | (max (list 2 3 1)) | 3 |
| min | (min (list 2 3 1)) | 1 |
| find | (find (list 2 3 1) 2) | 1 |
| reverse | (reverse (list 1 2 3 4)) | [4, 3, 2, 1] |
| enumerate | (enumerate "abcd") | [(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')] |
| sum | (sum (list 1 2 3 4 10)) | 20 |
Diccionario¶
Los diccionarios almacenan asociaciones llave->valor.
Sintaxis:
1 2 3 4 5 | |
En Botlang los diccionarios son ordenados, por lo que el orden de las llaves dado en su definición se mantiene.
1 2 3 4 5 6 7 8 | |
Estas estructuras admiten modificación de sus valores, lo cual constituye un mecanismo de mutación en Botlang, por lo cual el lenguaje no es puramente funcional.
Por ejemplo,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Operaciones¶
| Operador | Código de ejemplo | Resultado |
|---|---|---|
| get | (get dict key default) | Valor asociado a key. Opcional: entrega default si no encuentra la llave. |
| put | (put dict key value) | Entrega un nuevo diccionario resultante de añadir value a key en dict. |
| put! | (put! dict key value) | Asocia value a key en el diccionario dict |
| remove! | (remove! dict key) | Elimina la key del diccionario dict |
| keys | (keys dict) | Lista de llaves de dict |
| values | (values dict) | Lista de valores de dict |
| associations | (associations dict) | Lista de pares llave-valor de dict |