Como dicen los demás, claro, sigue siendo una función pura.
Sin embargo, hablemos sobre los problemas de diseño. Tiene razón al intentar hacer algo para mantener el código SECO, colocando el valor solo una vez. Además, lo que creo que también se debe considerar es el nivel de acoplamiento apropiado.
El uso de una función le brinda más flexibilidad para cambiar la implementación, lo que significa que el enfoque de la función ofrece un acoplamiento más flexible que una variable global.
La pregunta es si uno lo necesita o no.
Si los consumidores y el proveedor están en el mismo módulo, y el proveedor es privado para el módulo, es difícil argumentar que este nivel de acoplamiento flojo es necesario, debido al hecho de que si el proveedor requiere la actualización de una variable privada a una método privado, una refactorización simple dentro del módulo se puede aplicar a los consumidores al mismo tiempo. El uso de un método / función antes de que realmente lo necesite podría incluirse en YAGNI.
Incluso si el consumidor (s) y el proveedor están en módulos diferentes, los módulos se versionan juntos (por ejemplo, utiliza un minifyer, de modo que los módulos de los consumidores y el proveedor están en el mismo archivo), YAGNI también puede aplicarse.
Por otro lado, si, por ejemplo, el productor está en un paquete o módulo de biblioteca o API que se versiona por separado de los consumidores, entonces puede ser apropiado usar la función. En ese caso, deberíamos considerar la longevidad de la API y principios como OCP.
(En otra nota, si su código es de algún tamaño significativo, recomendaría el uso de módulos con campos y métodos en lugar de variables y funciones globales).
process
(con el orden de los parámetros invertidos) y luego especializar la función de curry paravar processDefault = process(":")