Les termes ne semblent être défini différemment, mais j'ai toujours pensé que l'un impliquant l'autre; je ne peux pas penser à tous les cas lorsqu'une expression est referentially transparent mais pas pur, ou vice-versa.
Wikipédia maintient des articles distincts pour ces concepts et dit:
De la transparence Référentielle:
Si toutes les fonctions impliquées dans la expression sont de pures fonctions, puis l'expression est referentially transparent. Aussi, certains impur les fonctions peuvent être inclus dans le expression si leurs valeurs sont jeté et leurs effets secondaires sont insignifiant.
Pure fonctions sont nécessaires pour construire pur expressions. [...] Pure les expressions sont souvent désignés comme des étant referentially transparent.
Je trouve ces déclarations à confusion. Si les effets secondaires d'une soi-disant "impure fonction" sont insignifiants suffisante pour permettre de ne pas l'effectuer eux (c'est à dire remplacer un appel à une fonction de ce genre avec sa valeur) sans vraiment changer de programme, c'est la même chose comme si elle était pure, en premier lieu, n'est-ce pas?
Est-il un moyen plus simple de comprendre les différences entre une expression pure et une referentially transparente, le cas échéant? Si il y a une différence, un exemple d'expression qui démontre clairement qu'il serait appréciée.