Funciones Puras
Una función pura, deberá cumplir con dos cosas específicamente. Primero. Dados los mismos parámetros de entrada la función debe retornar siempre el mismo valor. Segundo. La función no debe tener efectos colaterales, es decir no debe haber nada en el entorno que la altere. Como por ejemplo, variables globales.
Inmutabilidad
Hablando de variables, fomentaremos el uso de variables de tipo constante, o variables inmutables. La inmutabilidad es uno de los principios de la programación funcional donde nos promueve la ausencia de estado mutable o también conocido como Stateless, para entender esto mejor lo primero que debemos comprender es qué cosa se considera estado. Estado: será cualquier dato que se pueda guardar y modificar posteriormente en memoria Una variable Un archivo Un socket Para el caso de las variables en Kotlin preferirémos declararlas como ´val´ en vez de ´var´. Una buena práctica en nuestros programas es nunca tener variables de tipo ´var´ declaradas de manera global pues estas van en contra de la inmutabilidad, aunque sé que a veces es complicado prescindir de ellas en el resto del programa. Su mejor lugar es cuando están declaradas de manera local al método.
Ref: https://platzi.com/clases/1543-kotlin-2019/19391-programacion-funcional-funciones-puras-e-inmutabil/