As we will see, function definitions are also S-expressions:
So, Scheme really only has one syntactic structure, the
S-expression, and that is used as a data-structure (to
represent lists, trees, etc), as function definitions, and
as function calls.
Unlike languages like C and Java, Scheme allows identifiers to
contain special characters, such as
! $ % & * + - . / : < = > ? @ ^ _ ~ .
Identifiers should not begin with a character that can begin
a number.
This is a consequence of Scheme's simple syntax.
You couldn't do this in Java because then there would be
many ways to interpret the expression X-5+Y.