El primero al final

Definir la función

tal que (rota1 xs) es la lista obtenida poniendo el primer elemento de xs al final de la lista. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell

El código se encuentra en GitHub.


Soluciones en Python

El código se encuentra en GitHub.

Comentarios

  • El primer elemento de la lista xs se calcula
    • en Haskell, con head xs
    • en Python, con xs[0]
  • El resto de la lista xs se calcula
    • en Haskell, con tail xs
    • en Python, con xs[1:]
  • La concatenación de las listas xse ysse calcula
    • en Haskell, con xs ++ ys
    • en Python, con xs + ys
  • En Python. xs.append(x) modifica la lista xs añadiéndole x al final. Por ejemplo,

Máximo de tres números

Definir la función

tal que (maxTres x y z) es el máximo de x, y y z. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Solución en Haskell

El código se encuentra en GitHub.


Soluciones en Python

El código se encuentra en GitHub.

Comentarios

  • El máximo de x e y se escribe
    • en Haskell, max x y y
    • en Python, max(x, y).

Último dígito

Definir la función

tal que (ultimoDigito x) es el último dígito del número x. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Solución en Haskell

El código se encuentra en GitHub.


Solución en Python

El código se encuentra en GitHub.

Comentarios

  • El resto de la división entera se x entre y sn ecribe
    • en Haskell, rem x y,
    • en Python, x % y.

Área de la corona circular

Definir la función

tal que (areaDeCoronaCircular r1 r2) es el área de una corona circular de radio interior r1 y radio exterior r2. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Solución en Haskell

El código se encuentra en GitHub.


Solución en Python

El código se encuentra en GitHub.

Comentarios

  • La diferencia de dos números x e y se escribe en Python igual que en Haskell: x - y.

Volumen de la esfera

Definir la función

tal que (volumenEsfera r) es el volumen de la esfera de radio r. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Solución en Haskell

El código se encuentra en GitHub.


Solución en Python

El código se encuentra en GitHub.

Comentarios

  • El número \pi se representa igual en Python que en Haskell; pero, en Python. para usarlo hay que importarlo de la librería math.
  • La potencia de número x elevado al entero n se escribe
    • en Haskell, x^n y
    • en Python, x ** n.

Suma de monedas

Definir la función

tal que (sumaMonedas a b c d e) es la suma de los euros correspondientes a a monedas de 1 euro, b de 2 euros, c de 5 euros, d de 10 euros y e de 20 euros. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell

El código se encuentra en GitHub.


Soluciones en Python

El código se encuentra en GitHub.

Comentarios

  • El producto de dos números x e y se escribe en Python igual que en Haskell: x * y.

Media aritmética de tres números

Definir la función

tal que (media3 x y z) es la media aritmética de los números x, y y z. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Solución en Haskell

El código se encuentra en GitHub.


Soluciones en Python

El código se encuentra en GitHub.

Comentarios

  • Los comentarios irán resaltando las diferencias de la solución en Python respecto de la de Haskell (que no se hayan comentado en ningún ejercicio anterior).
  • La estructura de la definición en Python es

  • La suma de dos números x e y se escribe en Python igual que en Haskell: x + y.
  • El cociente de dos números decimales x e y se escribe en Python igual que en Haskell: x / y.

Curso de introducción a la programación con Haskell y Python

Mañana comenzará en Exercitium un curso práctico de introducción a la programación con Haskell y Python.

Diariamente, se publicará un ejercicio con sus soluciones en Haskell y en Python. El orden de los ejercicios se corresponde con el de los temas del curso de Programación funcional con Haskell. Además, en cada ejercicio se comentarán las diferencias entre ambos lenguajes y se irá extendiendo la tabla de equivalencia entre Haskell y Python.

Las soluciones de los ejercicios con Haskell se irán añadiendo al repositorio Exercitium em GitHub. Están como un proyecto con Stack (en concreto, la LTS-18.24) de forma que se puede verificar los ejemplos con

Las soluciones de los ejercicios con Python se irán añadiendo al repositorio Exercitium-Python em GitHub. Están como un proyecto con Poetry que usa la versión 3.10 de Python. También se pueden verificar los ejemplos con

He intentado escribir soluciones en Python parecidas a la de Haskell, conservando el estilo funcional. De todas formas, en los comentarios se pueden escribir definiciones alternativas en cualquiera de los lenguajes.

Los libros de Haskell en los que me he basado son

Los libros de Python en los que me he basado son