Listas, listas y más listas

Sin valoraciones

Listas, listas y más listas

Le hemos entrenado en variables y funciones, y ahora, entramos en el lúgubre pantano de las listas Scheme.

Definir una lista

Branding

Antes de que hablamos más sobre las listas, es necesario que sepa la diferencia entre valores atómicos y listas.

Ya ha visto los valores atómicos cuando inicializamos variables en la lección anterior. Un valor atómico es un valor simple. Así, por ejemplo, podemos asignar a la variable «x» el valor simple de 8 en la declaración siguiente:

(let* ( (x 8) ) x)

(Añadimos la expresión x al final para imprimir el valor asignado a x­­ normalmente, no necesitará hacer esto. Note como let* opera justo como una función: El valor de la última declaración es el valor devuelto).

Una variable puede, tambien, referirse a una lista de valores, casi como un valor simple. Para asignar a la variable x , la lista de valores 1, 3, 5, tecleamos:

(let* ( (x ‘(1 3 5))) x)

Intente teclear ambas declaraciones en la consola de Script­Fu y verá como contesta. Cuando teclea la primera declaración, responde con el resultado:

8

Cuando teclea la otra declaración, responde con el siguiente resultado:

Atencion sociosanitaria

(1 3 5)

Cuando responde con el valor 8 está informando que x contiene el valor atómico 8. Cuando responde con (1 3 5), entonces, está informando que x no contiene un valor simple, sino una lista de valores. Note que no hay comillas en nuestra declaración o en la asignación de la lista, ni en el resultado impreso. La sintaxis para definir una lista es:

‘(a b c)

donde a, b, y c son literales. Usamos el apóstrofe (‘) para indicar que lo que sigue entre paréntesis es una lista de valores literales, casí como una función o expresión. Una lista vacia puede definirse como:

‘()

o simplemente:

()

Las listas pueden contener valores atómicos, así como otras listas:

        (let*

           (

                (x

                   ‘(«The GIMP» (1 2 3) («is» («great» () ) ) )

                )             )       

      x

         )

Note que después del primer apóstrofe, no necesita usar un apóstrofe cuando defina las listas internas. Adelante, copie la declaración en la consola de Script­Fu y mire que devuelve.

Notará que el resultado devuelto no es una lista de simples valores atómicos; casí es una lista de un literal («The GIMP»), la lista (1 2 3), etc.

¿Como se representan las listas?

Es útil pensar que las listas están compuestas de una «cabeza» y de una «cola». La cabeza es el primer elemento de la lista, la cola es el resto de la lista. Verá porque esto es importante cuando tratemos como añadir listas y como acceder elementos en la lista.

Crear listas mediante concatenación (Lafunción cons)

Una de las funciones más comunes que encontrará es la función cons. Toma un valor y lo situa en el segundo argumento, una lista. En la sección previa, sugerí que piense que una lista está compuesta de un elemento (la cabeza) y el resto de la lista (la cola). Es, exactamente, como cons funciona ­­ añade un elemento a la cabeza de la lista. Puede crear una lista como sigue:

(cons 1 ‘(2 3 4) )

El resultado es la lista (1 2 3 4).

También, podrías crear una lista con un elemento:

(cons 1 () )

Puede usar, previamente, variables declaradas en lugar de literales, como cabría esperar.

Compártelo en tus redes

Share on facebook
Share on twitter
Share on linkedin
Share on pinterest

Valore este curso

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Utilizamos cookies para asegurar que damos la mejor experiencia al usuario en nuestra web. Si sigues utilizando este sitio asumimos que estás de acuerdo. VER