The Scheme dialect of Lisp was created in 1975 by Guy Steele and Gerry Sussman to explore ideas in programming-language semantics. Scheme pioneered lexical scope in Lisp, first-class continuations, and tail recursion, and more recently added an advanced macro system. In CL each variable has a value binding and a function binding. Scheme variables have only a value binding, and functions are just another kind of value.
Scheme tends to encourage more use of nested scopes.
Control Structures Scheme implementations are properly tail-recursive. Without fully general tail-call optimization, we'd have to complicate the interface between GO and the handlers. For nonlocal transfers of control, Scheme provides a special kind of procedure called a continuation. The difference is, when invoked, a continuation abandons the current control context and replaces it with the context of its creation. This extra flexibility makes it possible to express just about any control structure directly in Scheme, including threads, coroutines, and Prolog-style nondeterminism.