Then there should be a discussion on why Haskell, in general, does not have observable sharing. Answer, because that breaks referential transparency. That is, if you can tell if two pointers are equal then a function can produce different outputs from the same inputs.
In the glossary I link to the wikipedia entry for closures. This is lazy, cite the lambda papers!
similarly in the sharing item I don't cite anything. This is also lazy! I should cite at least:
Then there should be a discussion on why Haskell, in general, does not have observable sharing. Answer, because that breaks referential transparency. That is, if you can tell if two pointers are equal then a function can produce different outputs from the same inputs.