Haskell

Haskell 10: Rangos

20 videos

111 minutos

Hola mundo ¿cómo están? Mi nombre es José y les doy la bienvenida a este nuevo tutorial del curso de Haskell y en esta ocasión vamos a ver un poco rangos que podemos utilizar en nuestras listas, es decir, si queremos por ejemplo en nuestra lista tener todos los números, por ejemplo, pares que hay o todos impares del 1 al 100, sería muy complicado,

pues, sí empezamos a escribir let lista igual y ahora con los corchetes, y empezamos a poner todos los números pares hasta el 100, por ejemplo, no, sería muy complicado, entonces, como podemos hacer en Haskell, pues en Haskell; hay un sistema de ‘mini-inteligencia’, que sirve para que, el compilador entienda, que es lo que nosotros; que lista queremos generar.

Solamente tenemos que pasar los dos primeros números de la lista y ella automáticamente interpreta el resto. Por ejemplo, sí yo quiero poner todos los números pares diría así: 2, 4. Solamente eso y después dos puntos y hasta donde quiero que generé, por ejemplo, yo quiero que sea hasta el 100, por ejemplo. Ahora sí. Ya está. Y ya Haskell sabe que, quiero saber todos los números de 2 en 2.

Así que hago lista y me salen todos los números pares, que hay desde el 2 hasta el 100, porque es el límite que yo le he puesto. Así que, si yo aquí le digo que el límite sea 103, pues entonces, me quedará hasta el 102, porque después del 103 no avanza. Claro, pero, la cosa está en que esto, Haskell lo interpreta como una diferencia de suma;

si yo quiero tener, que en vez de que sea de 2 en 2, quiero que sean las potencias de dos; por ejemplo, quiero que aquí me dé 2, 4, 8, 16… y yo hago así hasta el 100 por ejemplo, me da error; porque solo puedo pasar 2 parámetros, dos, nada más que dos Entonces, como sabe Haskell, si lo que yo quiero es me vaya sumándome dos y me dé de dos en dos o si yo lo que quiero es multiplicándome de dos en dos.

Bueno eso Haskell no lo puede saber y tampoco podemos darle varios parámetros para que, como si le dirémos pistas, no. Haskell lo que hace, qué por defecto, considera la relación que hay, de uno y otro, siempre como suma o como resta; así que sí aquí le di un dos y aquí un cuatro lo que hago es sumar de dos en dos y me va a continuar dando sumas de dos en dos consecutivas,

que son las que tenemos aquí; igual que con cualquier número, sí yo aquí le pongo lista y comienzo con el uno y después le doy un siete, así hasta el treinta y cuatro, por ejemplo, lo que hecho es sumar seis, así que después me dirá un siete más seis, trece y más seis, diecinueve; si ejecuto es lo que tenemos ahí, uno, siete, diecinueve y va de seis en seis, esa es la diferencia.

Igualmente, también de forma inversa, si yo aquí le pongo lista y quiero aquí los números, desde el cien, que me vaya bajando de cinco en cinco, hasta el cero, pues voy a tener ahí todos los números, de cinco en cinco; porque la diferencia de este número a este son menos cinco, así que desde ahí me va restando cinco, no, hasta llegar al cero. Bien. Esa es la forma de crear listas sin poner todos los números,

igualmente esto me funciona para las letras; sí yo aquí le pongo la lista y quiero las letras desde la a y que me vayan saltando una sí y una no, y le pongo: sería la a la b, no, la c, sí, supone que la siguiente es la c, así hasta la z. Pues entonces ahora me salen las letras, pero saltadas; vieron, la a, la b, no la c, sí la d, no, la e, sí; una sí y una no, que es la secuencia que le he dado.

Con una diferencia y un salto de letra. Pero claro, si lo que quiero es que me salgan todas, pues entonces lo que tengo que hacer, voy aquí a limpiar la pantalla entonces lo que tengo que hacer es simplemente poner la primera y la última, y ya Haskell entiende lo que significa eso, sí yo pongo aquí, uno y le digo hasta el ochenta, pues me va a dar todos los números del uno al ochenta, de uno en uno, vieron.

Igualmente, con… bueno y esto da igual que ponga desde el uno, puedo comenzar en el siete; del siete hasta al treinta y siete; hey, perdón, me falto el igual por eso; y ahora me lo va a dar de uno en uno; no, porque cuando yo no le digo nada, va de uno en uno, así que la secuencia va hasta el treinta y siete. Igual con las letras, si yo aquí le hago con las letras y quiero que me salgan desde la a hasta la h,

por decir un ejemplo, pues ahí lo tengo, todas las letras; igual con las mayúsculas, yo puedo poner desde la J hasta la V y ahora ya; Uy, perdón, tengo que ponerle los dos puntos; he hecho una lista con dos elementos, ahora ahí tengo todas las mayúsculas, JKLMN, tal cual como están en el abecedario. Pues bien, este ha sido el tutorial de esta vez, hemos visto cómo aplicar rangos a creaciones de listas

y para el siguiente tutorial vamos a ver algunas cuestiones que tienen que ver con listas infinitas; es decir, si yo aquí me creo una lista, pero no le digo hasta que número; eso lo dejo abierto, esa lista es infinita, no, si yo aquí quiero los múltiplos de tres y le digo 3, 6, punto, punto y no le digo nada, lo crea y ahora cuando le doy a mostrar, me salen todos los números múltiplos de tres, no; le voy a darle aquí al pause y se interrumpe,

y bueno, ya se me fue el inicio, pero ahí vemos, cogemos este, no; va sumando tres; 47, 50, 53, 56, hay listas infinitas, no. Entonces, eso, en el siguiente tutorial vamos a ver cómo administrarlo y así que espero que os este gustando. Pueden darle like, compartir 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!!!!!