El primero al final
Definir la función
| 
					 1  | 
						   rota1 :: [a] -> [a]  | 
					
tal que (rota1 xs) es la lista obtenida poniendo el primer elemento de xs al final de la lista. Por ejemplo,
| 
					 1  | 
						   rota1 [3,2,5,7]  ==  [2,5,7,3]  | 
					
Soluciones
A continuación se muestran las soluciones en Haskell y las soluciones en Python.
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27  | 
						import Test.QuickCheck -- 1ª solución -- =========== rota1a :: [a] -> [a] rota1a [] = [] rota1a xs = tail xs ++ [head xs] -- 2ª solución -- =========== rota1b :: [a] -> [a] rota1b []     = [] rota1b (x:xs) = xs ++ [x] -- Comprobación de equivalencia -- ============================ -- La propiedad es prop_rota1 :: [Int] -> Bool prop_rota1 xs =   rota1a xs == rota1b xs -- La comprobación es --    λ> quickCheck prop_rota1 --    +++ OK, passed 100 tests.  | 
					
El código se encuentra en GitHub.
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34  | 
						from typing import TypeVar from hypothesis import given, strategies as st A = TypeVar('A') # 1ª solución def rota1a(xs: list[A]) -> list[A]:     if xs == []:         return []     return xs[1:] + [xs[0]] # 2ª solución def rota1b(xs: list[A]) -> list[A]:     if xs == []:         return []     ys = xs[1:]     ys.append(xs[0])     return ys # 3ª solución def rota1c(xs: list[A]) -> list[A]:     if xs == []:         return []     y, *ys = xs     return ys + [y] # La equivalencia de las definiciones es @given(st.lists(st.integers())) def test_rota1(xs: list[int]) -> None:     assert rota1a(xs) == rota1b(xs) == rota1c(xs) # La comprobación es #    src> poetry run pytest -q el_primero_al_final.py #    1 passed in 0.20s  | 
					
El código se encuentra en GitHub.
Comentarios
- El primer elemento de la lista 
xsse calcula- en Haskell, con 
head xs - en Python, con 
xs[0] 
 - en Haskell, con 
 - El resto de la lista 
xsse calcula- en Haskell, con 
tail xs - en Python, con 
xs[1:] 
 - en Haskell, con 
 - La concatenación de las listas 
xseysse calcula- en Haskell, con 
xs ++ ys - en Python, con 
xs + ys 
 - en Haskell, con 
 - En Python. 
xs.append(x)modifica la listaxsañadiéndolexal final. Por ejemplo, 
| 
					 1 2 3 4  | 
						>>> xs = [3, 2, 5] >>> xs.append(1) >>> xs [3, 2, 5, 1]  |