Well-scoped terms are introduced to be able to evaluate without type casting. The implementation
is inspired by "Typing Dynamic Typing" (Baars and Swierstra, ICFP 2002,
http://doi.acm.org/10.1145/581478.581494) where expressions are represented as (essentially)
Reader env a after "compilation". However, a major difference is that
"Typing Dynamic Typing" starts from an untyped term, and thus needs (safe) dynamic type casting
during compilation. In contrast, the denotational semantics of BindingWS (the Eval instance)
uses no type casting.