Listas, listas y más listas

[mr_rating_result]

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

[mr_rating_form]

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