Haskell

Haskell 09: Funciones de Listas parte 2 de 2

20 videos

111 minutos

Hola mundo ¿Cómo están? Mi nombre es José y le doy la bienvenida a este nuevo curso de Haskell, el que estamos haciendo y en el vídeo de hoy vamos a ver un poco cómo hay unas funciones que nos pueden ayudar para, pues cambiar listas, sacar productos, cálculos con ellos. Así que, bueno, me voy a crear dos listas, que las tengo aquí de la vez pasada; una lista va a ser está y esta va a ser la otra; en la lista que se va a llamar “Lista”,

tengo números y en la otra tengo listas internas, esta vez de caracteres. Bueno, entonces, si utilizo la función reserve y ya hago el reserve de lista; ¡eh!, perdón, no es reserve es reverse, lo que quiero hacer es revertirla. Reverse de lista, lo que me hace es que se me va toda la lista me da la vuelta, así que se me pone de manera inversa, ahí lo vieron no, del fin al principio; pero lista sigue valiendo los mismo, no le cambio el valor,

solamente que se me mostró al revés, pero el valor de lista parece intacto. Si yo hago lo mismo con la otra, pongo aquí un reverse de listaDelista, pues se me hace el cambio, pero se me hace el cambio de los elementos, de los índices de está lista; pero vieron que no se me cambio: “dc”, “ba”, lo ves, solamente se cambió las posiciones; todo este primer conjunto pasa al primer lugar y todo esté conjunto pasa al segundo lugar.

Así que, yo aquí, como vieron, pasa el conjunto, pero sin hacer una alteración de ese orden, simplemente ahí se me fue eso. Ok. Así que, está es otra función: el reverse. Ahora, como sería, entonces para más funciones, pues fíjense. Yo aquí hago un take 3, tomar 3 de lista, me saca las 3 primeras; y si le hago un take 5 de lista, huy, le tengo que decirle de dónde. Voy a limpiar esto, así queda mejor. A un take 5 de lista y me saca las cinco,

y si yo le hago un take 100 de lista, no hay cien, pero me saca las que hay, no, más no puede sacar. Ok. Igual que puedo tomar los primeros equis elementos de una lista con la función take, aunque el valor de lista parece intacto; también puedo hacer para que se me muestren, los elementos de una lista, pero se me quiten los primeros equis elementos; es decir,

con take me muestran los primeros equis y con otra función que se llama, drop me quita los primeros equis elementos y me saca el resto. Por ejemplo, pues si yo; aquí tengo lista, no. La están viendo el valor de lista y sí aquí hago un drop 2 de lista, me saca todos los que hay, pero los primeros dos me los quita, pero lista sigue valiendo lo mismo; si yo quiero que me quite los 5 primeros elementos de lista,

me saca los que hay a partir del sexto. Ok. Pero lista parece intacto. Y si hago un drop 100 de lista, pues, no me pueden quitar cien, pues me quitan los que hay, no, simplemente no me saca nada. Ok. Así que ya vieron cómo administrar lo que se me muestra o no, puede hacer para que me quiten algunos y lo que puedo hacer para que se me muestren otros, ok. Entonces vamos a ver más funciones,

recuerdan al principio del todo, que decimos que, en Haskell tiene implementada, por defecto, unas funciones. Por ejemplo: la función min, si yo le decir 8 y 3 me daba la mínima, pero no estaba preparado para recibir varios parámetros, no; yo si le daba varios, pues no, no funcionaba, solamente podía recibir dos; pero cómo puedo hacer ahora y quiero calcular varios; bueno aquí tengo lista, entonces ahora sí,

con la función mínimum, si yo aquí llamo está función, ésta le digo que le pase el mínimo de lista; ésta sí que me va a pasar el mínimo de lista. Hay ya sí puedo enviarle, ósea puedo hacer una comparativa de varios números, siempre y cuando todos estén perteneciendo a la misma lista. Igualmente, en vez de poner minmum lista, aquí puedo poner minmum y después simplemente yo puedo pasar una lista, que este creado como yo quiera.

Puedo hacer así directamente y pasarle una lista, y me va a salir el número. Ok. Igualmente, con la función máximum, si hago un máximum de lista, me sale un 7 y sí yo en esta función, aquí le hago un máximum de todo esto, entonces me dice que es un 9. Ahora, sí yo quiero, bueno, todo esto también se puede hacer con la otra, listaDelista, la máxima es un “cd”, porque son los que tienen los caracteres con un valor más elevado,

ahí lo vieron, no. Entonces, como sería sí ahora, yo quiero hacer cálculos con las listas. De nuevo aquí tengo la lista y ahora si o aquí le digo que sume todos los elementos de la lista, sí yo sumará todos estos números me dan un 28, si le hago la suma a todos y también, si yo hago aquí un product de una lista, por ejemplo, de 1, 2, 4, me va a salir una multiplicación; uno va a multiplicar a todos, seguido; pues uno por dos,

dos; dos por cuatro, 8. Ahí lo vieron, no, que sería igual si yo pusiera así: 1 x 2 x 4 x 5 x 6 x 7, y ya vieron lo que me sale, sí, es el resultado de la multiplicación. Si esto lo hago en una lista, lo pongo así: 1, 2, 4, 6, 7, me sale el mismo resultado; con product, ahí estoy multiplicando y por último también puedo comprobar, si algún elemento que yo quiera, puedo preguntar si ese

elemento está en la lista o no. Por ejemplo: si yo aquí estoy haciendo referencia, ahora, tengo está lista y quiero preguntar si en está lista hay algún un número, por ejemplo, el número ocho, lo pongo así, con las comillas francesas, perdón, con el acento francés, ahí. Pongo el número 8, ¿es un elemento de lista? Y me dice que es false, porque en esa lista no hay un 8. Pero si yo le pregunto por un 4, pues sí, pues si es con un 4 me da un true.

Si yo me voy a la listaDelista, aquí la tengo y yo aquí hago lo mismo y pregunto: sí “cd” es un elemento de listaDelista, me va a decir que sí; pero sí pregunto: si c es un elemento de listaDeeista, me va a decir que no, porque c como tal no es un elemento; es un elemento de una lista interna; listaDelista, ven me va a decir, bueno, para empezar, me da hasta un error; porque… efectivamente no, no se puede, no tiene sentido lo que estamos haciendo,

no, eso no es cierto, ok. Como sería entonces, si quisiéramos ahora preguntar internamente, para hacer referencia a un elemento dentro de un elemento, pues una lista dentro de otra lista; pues yo puedo poner: sí cd, no perdón, sí c es un elemento de listaDelista en la posición 1; ahí sí me dice que sí, porque ya, recuerde esta es la posición 0, esta es la posición 1,

entonces c es un elemento de esta posición, eso sí es cierto, vieron ahí sí; igualmente, pues si yo aquí pregunto lo mismo, pero sí es a un elemento de listaDelista en la posición 1, me dirá que no, pero en la posición 0 me dirá sí, ahí lo tengo. Bueno, esto ha sido el tutorial de esta vez, hemos visto bastantes funciones de cómo hacer cálculos y gestionar como se muestran o no, pues estas

listas y en el siguiente vídeo vamos a ver todavía más cosas sobre Haskell que son interesantes. Espero que os estén gustando los vídeos. Pueden dar like, compartirlo o suscribirse y les mando un saludo.

Si quieres enterarte de los nuevos cursos, suscríbete. No habrá spam, prometido :)

Sobre el autor

foto de jotajotavm
José Javier Villena

jotajota pa los amigos y jota pa los de más cnfianza.

Bio Seria: Analista-Programador en diferentes lenguajes. Tutor PREMIUM de reconocidas plataformas de nivel mundial como CodigoFacilito. Redactor de artículos para Cristalab. Mi canal de YouTube está patrocinado por la editorial ANAYA y LaTostadora. Me gusta explicar con detalle y poner varios ejemplos para que no queden dudas.

Bio Molona: Me presento :) soy informatico, ni frostis d hardware pero muy muxo de programacion, friki a medias o del to segun el dia. Me gusta programar, muxo. Manejo varios lenguajes y tdo lo ke sepa lo comparto x amor al arte. Este no es mi trabjo pero lo ago mejor y con +ganas y calidad que si lo fuera, x eso mismo, xq para mi es divertido. Solo spero al menos algo de agradecimientO!! ;)

Dios, qe gusto haber escrito este parrafo cm me a dao la gana sin pensar en ortografia ni tildes ni historias!!!!!