Sí, las funciones puras memorizadas se conocen comúnmente como puras. Esto es especialmente común en lenguajes como Haskell, en los que los resultados inmutables, evaluados de forma perezosa y memorizados son una característica incorporada.
Hay una advertencia importante: la función de memorización debe ser segura para subprocesos, o de lo contrario podría obtener una condición de carrera cuando dos subprocesos intentan llamarla.
Un ejemplo de un científico informático que usa el término "puramente funcional" de esta manera es esta publicación de blog de Conal Elliott sobre la memorización automática:
Quizás sorprendentemente, la memorización puede implementarse de manera simple y puramente funcional en un lenguaje funcional vago.
Hay muchos ejemplos en la literatura revisada por pares, y lo han sido durante décadas. Por ejemplo, este documento de 1995, "Uso de la memorización automática como herramienta de ingeniería de software en sistemas de IA del mundo real", utiliza un lenguaje muy similar en la sección 5.2 para describir lo que hoy llamaríamos una función pura:
La memorización solo funciona para funciones reales, no para procedimientos. Es decir, si el resultado de una función no se especifica completa y determinísticamente por sus parámetros de entrada, el uso de la memorización dará resultados incorrectos. El número de funciones que se pueden memorizar con éxito aumentará al fomentar el uso de un estilo de programación funcional en todo el sistema.
Algunos idiomas imperativos tienen un idioma similar. Por ejemplo, una static const
variable en C ++ se inicializa solo una vez, antes de usar su valor, y nunca muta.