Sim, funções puras memorizadas são comumente referidas como puras. Isso é especialmente comum em idiomas como Haskell, nos quais resultados imutáveis, memorizados, com preguiça de avaliar preguiçosamente são um recurso interno.
Há uma ressalva importante: a função de memorização deve ser segura para threads, ou você pode ter uma condição de corrida quando dois threads tentam chamá-lo.
Um exemplo de cientista da computação que usa o termo "puramente funcional" dessa maneira é este post de Conal Elliott sobre memoização automática:
Talvez surpreendentemente, a memorização possa ser implementada de maneira simples e puramente funcional em uma linguagem funcional preguiçosa.
Existem muitos exemplos na literatura revisada por pares e existem há décadas. Por exemplo, este artigo de 1995, “Usando a memorização automática como ferramenta de engenharia de software em sistemas de IA do mundo real”, usa linguagem muito semelhante na seção 5.2 para descrever o que hoje chamaríamos de função pura:
A memorização funciona apenas para funções verdadeiras, não para procedimentos. Ou seja, se o resultado de uma função não for especificado de forma completa e determinística por seus parâmetros de entrada, o uso da memorização fornecerá resultados incorretos. O número de funções que podem ser memorizadas com sucesso será aumentado, incentivando o uso de um estilo de programação funcional em todo o sistema.
Algumas linguagens imperativas têm um idioma semelhante. Por exemplo, uma static const
variável em C ++ é inicializada apenas uma vez, antes que seu valor seja usado e nunca sofre mutação.