[Add a comment describing the function of E.Subst.
Lemmih <lemmih@gmail.com>**20080220184027] hunk ./E/Subst.hs 15
--- This is tricky.
+-- This is a little tricky.
+
+{-
+
+Consider the following example.
+fn = \x0 -> let x1 = 10+x0      -- x1 is only used once, let's inline it.
+            in (\x0 -> x1+x0)   -- x0 from the outer lambda isn't used.
+
+Simply inlining x1 will give this errornous result:
+fn = \x0 -> (\x0 -> (10+x0)+x0)
+
+We solve this by renaming variable whenever they clash with the current scope:
+fn = \x0 -> (\x1 -> (10+x0)+x1)
+
+
+Another solution would be to assign a globally unique id to each variable. However,
+in a pure and lazy language like Haskell, renaming variables on the fly is easier
+and quite fast.
+
+New ids are currently generated by selecting psuedo random numbers and checking if
+they're free. Another posibility would be to select the highest known id number + 1.
+See Name.Id.newId for more information.
+
+-}