In Pliant, and identifier can be anything.
If it starts with a letter, and contains only letters, digits or underscores,
then you don't need to put quotes around.
If it contains other characters, then the quotes are required.
The general idea is that I use spaces in some indentifiers in order to
avoid name clashes (with local variables that should never use special
characters, and with local functions).
Are the 'cast Xxx' identifers special like the '. xxx' ones ?
The Pliant casting mechanism is something very complexe because
several casting instructions can be applyed.
As an example, if the function want's an 'Intn' and we receive an 'Int8' then
the following will be applyed:
Int8 -> Int -> Intn
The name of the casting function is constrained so that Pliant engine can
resonably fast decide what the right casting sequence is.
The '?' is an operator defined in module /pliant/language/debug/error2.pli
and it says, if there is a pending error, then exit the current function.