They have at least two important applications. 1. Defining new local variables without the let expression which introduces an extra pair of "(" and ")". It also helps us define new non-local variables in any nested scope. 2. I believe that first-class macros plus first-class global environments can be used to separate namespaces. Arc doesn't need an official module system, but it's not bad to let the user build their own. There might be more applications of them. If continuations can be first-class, why shouldn't environments? Efficiency may be a reason. But according to my knowledge, in Arc culture, expressiveness and power are never compromised for efficiency. |