Returns a fresh, uninterned symbol. The returned symbol can never
be eq? to other symbol within the process.
If prefix is given, which must be a string, it is used
as a prefix of the name of the generated symbol. It is mainly for
the convenience of debugging.

Function: symbol-sans-prefixsymbol prefix

Both symbol and prefix must be symbols.
If the name of prefix matches the beginning part of the
name of symbol, this procedure returns a symbol whose
name is the name of symbol without the matched prefix.
Otherwise, it returns #f.

Returns a symbol with the name which is a concatenation of
string representation of objs.

If the first argument is a boolean, it is recognized as the
first form; the first argument specifies whether the resulting
symbol is interned or not.

Each other argument is converted to a string as follows:
If it is a keyword, its name (with the preceding :) is used.
For all other objects, x->string is used. (The special treatment
of keyword is to keep the consistency before and after
keyword-symbol integration. See Keyword and symbol integration, for
the details.)

This is upper-compatible to Bigloo’s same name procedure, which
only allows symbols as the arguments and the result is always interned.