programming with functions.
What’s a function?
f: A => Brelates every value of type of
Ato excatly one value of type
Band nothing else.
To clarify the “nothing else” part, he introduces the notion of referential transparency as follows:
eis referentially transparent if every occurrence
ecan be replaced with its value without affecting the observable result of the program.
Using this notion, we can think of functional programming as building up referentially transparent expression tree. Memoization is one way of taking the advantage of referential transparency.