Back to 2015-proposals
Title: Referential transparency is overrated
Proposer: Didier Verna
Type: Presentation
Duration: 90 mins
Description:
The expression 'referential transparency' itself is already confusing and
subject to interpretation, according to whether you're in the context of
natural, functional or imperative languages. In any of those contexts however,
referential transparency is generally regarded as a Good Thing ™. In
computer science for example, it helps to reason about programs, prove them,
optimize them, and even enables some paradigms such as normal order (lazy)
evaluation.
In this talk, we claim that referential transparency is overrated because it
also limits your expressive power. We demonstrate some neat and tricky things
that we can do only when referential transparency is broken, and we explain
the language constructs and techniques that allow us to break it
intentionally, both at the regular and meta-programming levels. Such tools
include duality of syntax and syntax extension, mixing of different scoping
policies, intentional variable capture and free variable injection, lexical
communication channels, anaphoric macros.
Please fasten your seat belts, as we're going to explore mostly uncharted
territory. Whether these techniques are considered extremely powerful,
extremely unsafe, or extremely bad style is a matter of personal taste. In
fact, they are probably all of that, and much more . . .