Scheme is a language based on Lisp. Scheme features procedures as first-class entities; that is, procedures are treated just like any other kind of value. They may be passed as arguments to other procedures, stored in variables, or used as return values.
Scheme is weakly typed, which means that it is not necessary for the programmer to specify the type of each variable. This can be an advantage, especially in small programs, since it is often tedious to have to declare each variable. Weak typing allows the programmer to write very general procedures that can take any type of value, instead of having to write separate procedures for each type.