Cuando un procedimiento modifica su entorno, puede resultar difícil razonar sobre el comportamiento del programa. Por ejemplo, considere la siguiente función de Python:
```pitón
def add_to_list(lista, valor):
lista.append(valor)
```
Esta función agrega un valor a una lista. Sin embargo, no devuelve la lista, por lo que no está claro cuál es el valor de la lista después de llamar a la función. Esto puede dificultar la depuración de programas que utilizan esta función.
Por el contrario, considere la siguiente función pura de Python:
```pitón
def add_to_list(lista, valor):
lista de retorno + [valor]
```
Esta función devuelve una nueva lista que contiene el valor agregado a la lista original. Esto deja claro cuál es el valor de la lista después de llamar a la función y facilita la depuración de programas que utilizan esta función.
En general, se considera una buena práctica utilizar procedimientos puros siempre que sea posible. Esto puede ayudar a que los programas sean más fáciles de entender y depurar.