Listas en Racket
Empecemos por ¿cómo declarar listas en scheme? crear una lista es fácil se usan dos formas ya sea creando paso por paso con "cons" o usando un "list"para crearla rápidamente.; =========================================================================== ;Forma 1 (list 1 2 3 4 5) ;Forma 2 (cons 1 (cons 2 (cons 3 (cons 4 (cons 5 empty))))) ; ===========================================================================
Al ejecutar el programa arroja:
; =========================================================================== (list 1 2 3 4 5) (list 1 2 3 4 5) ; ===========================================================================
Ahora se tiene que resaltar que ambas formas son iguales pero, aunque usando el "list" parezca más corto se tiene que entender que con el "cons" y un poco de recursión te servirá para crear las listas desde cero con funciones más complejas.
EMPTY en scheme
Además ten en cuenta que las listas siempre terminan con un elemento [VACÍO] aunque no aparezca en pantalla, si no incluyes este elemento "vacío" al final de la lista cuando la armas con cons te arrojará un error.
las formas de usar el elemento de "vacío" en la página es: '() - null - empty. estos elementos son muy importantes el saber usarlos para poner condiciones de parada en un ciclo, Ejemplo:
; =========================================================================== (empty? (list 1 2 3 4 5)) --> #false ;----------------------------------- (empty? (list )) --> #true ;----------------------------------- (null? (list 1 2 3 4 5)) --> #false ;----------------------------------- (null? (list )) --> #true ; ===========================================================================
Como sacar elementos en un lista - Racket
Es importante saber como obtener cada elemento de una lista para poder hacer cualquier programa con listas:Para sacar el primer elemento de una lista se usa:
; =========================================================================== > (first (list 1 2 3)) 1 > (car (list 1 2 3)) 1 ; ===========================================================================
Para sacar los elementos que estan despues del primero se usa:
; =========================================================================== > (rest (list 1 2 3)) (list 2 3) > (cdr (list 1 2 3)) (list 2 3) ; ===========================================================================
Existen formas de sacar elementos individuales de forma única para sacar solo el segundo elemento o el tercero solamente y así sucesivamente pero esto solamente es útil para hacer secuencias en cambio el first y el rest son muy útiles para los ciclos.